admin 管理员组

文章数量: 1086019


2024年3月13日发(作者:oops英语怎么读音发音)

Java继承

先说继承

继承是面向对象最显著的一个特性。继承是从已有的类中派生出新的类,新的类能吸收

已有类的数据属性和行为,并能扩展新的能力。

Java继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据

或新的功能,也可以用父类的功能,但不能选择性地继承父类。

这种技术使得复用以前的代码非常容易,能够大大缩短开发周期,降低开发费用。比如可以

先定义一个类叫车,车有以下属性:车体大小,颜色,方向盘,轮胎,而又由车这个类派生

出轿车和卡车两个类,为轿车添加一个小后备箱,而为卡车添加一个大货箱。

继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,

或子类从父类继承方法,使得子类具有父类相同的行为。

再说Java继承

Java继承是面向对象的最显著的一个特征。继承是从已有的类中派生出新的类,新的类

能吸收已有类的数据属性和行为,并能扩展新的能力。

类和类之间的继承关系可以用UML符号表示,其中父类又叫超类或基类,子类又叫派生类。

父类是子类的一般化,子类是父类的特化(具体化)。

JAVA不支持多继承,单继承使JAVA的继承关系很简单,一个类只能有一个父类,易于

管理程序,同时一个类可以实现多个接口,从而克服单继承的缺点。

在面向对象程序设计中运用继承原则,就是在每个由一般类和特殊类形成的一般——特殊结

构中,把一般类的对象实例和所有特殊类的对象实例都共同具有的属性和操作一次性地在一

般类中进行显式的定义,在特殊类中不再重复地定义一般类中已经定义的东西,但是在语义

上,特殊类却自动地、隐含地拥有它的一般类(以及所有更上层的一般类)中定义的属性和操

作。特殊类的对象拥有其一般类的全部或部分属性与方法,称作特殊类对一般类的继承。

继承所表达的就是一种对象类之间的相交关系,它使得某类对象可以继承另外一类对象的数

据成员和成员方法。若类B继承类A,则属于B的对象便具有类A的全部或部分性质(数据

属性)和功能(操作),我们称被继承的类A为基类、父类或超类,而称继承类B为A的派生

类或子类。

继承避免了对一般类和特殊类之间共同特征进行的重复描述。同时,通过继承可以清晰

地表达每一项共同特征所适应的概念范围——在一般类中定义的属性和操作适应于这个类

本身以及它以下的每一层特殊类的全部对象。运用继承原则使得系统模型比较简练也比较清

晰。

(1)继承关系是传递的。若类C继承类B,类B继承类A(多层继承),则类C既有

从类B那里继承下来的属性与方法,也有从类A那里继承下来的属性与方法,还可以有自

己新定义的属性和方法。继承来的属性和方法尽管是隐式的,但仍是类C的属性和方法。继

承是在一些比较一般的类的基础上构造、建立和扩充新类的最有效的手段。

(2)继承简化了人们对事物的认识和描述,能清晰体现相关类间的层次结构关系。

(3)继承提供了软件复用功能。若类B继承类A,那么建立类B时只需要再描述与基

类(类A)不同的少量特征(数据成员和成员方法)即可。这种做法能减小代码和数据的冗余度,

大大增加程序的重用性。

(4)继承通过增强一致性来减少模块间的接口和界面,大大增加了程序的易维护性。

(5)提供多重继承机制。从理论上说,一个类可以是多个一般类的特殊类,它可以从

多个一般类中继承属性与方法,这便是多重继承。Java出于安全性和可靠性的考虑,仅支持

单重继承,而通过使用接口机制来实现多重继承。

好处

Java继承的从某种意义上讲,Java继承的短暂美就如同宇宙中所有事与其它事情都存在

一种特殊的关系。教育者试图向门外汉们解释继承的概念,常常通过讨论相关动物群之间的

关系来解释这一概念。在Java和NET中,在某种程度上讲,所有事物都是对象类型的一种

软件组件。然而,从那里开始,开发选择什么在子类和超类继承中进行关联是设计的重点。

使用Java进行桌面渲染中的问题是,过多的思想投入到把在一起的可视化项目进行分

组。从亲子关系来看,所有地的知名的图形元素,虽然知名的方法不同,但都与一般的Window

类有着极大的关系。所有我们选择的、继承于Window类的,与JDialog属性有关的东西,

都与上一级的JFrame有关,因为他们有共同的父Window类。的确,编写可重用的代码来

管理许多相关的子对象是优秀设计的标志。正如上文说的狗和窗户一样,伟大的多态设计都

是关于抽象、分类、设计、和继承的。

示例代码

//建一个A类

class A{

//成员变量 其中num是实参

int num=0;

//成员方法,其中 i 是形参

public A(int i){

//输入int型文件输出下面

n("aaaaaaaaaaaaaaaaaaa");

n("i= "+i);

//把输入的i赋值给成员变量num

num=i;

}

}

//B继承A

class B extends A{

int num=0;

//成员方法B.

public B(){

//继承类A的方法.因为B继承了A必然继承了A的特性.所以输入int值10令方法

实现.

super(10);

n("bbbbbbbbbbbbbbbbbbbb");

//这里的num是类B的.

n("num= "+num);

//如果想显示类A的num则需要用下列的.这里注意num在类A中需是

成员变量才可以.

n("= "+);

}

}

//建立测试类C

public class C{

//main

public static void main(String aa[]){

//new 一个对象B()

new B();

}

}


本文标签: 继承 属性 父类 方法