黑马程序员技术交流社区

标题: 继承的问题 [打印本页]

作者: 蔡鹏飞    时间: 2012-7-11 11:24
标题: 继承的问题
本帖最后由 蔡鹏飞 于 2012-7-12 15:52 编辑

继承的特点可以归纳成三点
1、单根性(一个子类只能继承一个父类,但一个父类可以有多个子类,java不支持多继承)               2、传递性(A继承B,C继承B,C就获得A和B的所有属性和方法)
3、唯一性
我以前学的时候老师是这么归纳的(如果没记错的话),但是唯一性怎么解释,不怎么明白,看了视频好像也只是归纳了两点,求解释!
作者: 。_Smileヾ淡莣    时间: 2012-7-11 14:20
你确定有唯一性吗?好像是不确定性吧?
作者: 姬仁贵    时间: 2012-7-11 14:35
唯一性我没有听说过、我也在网上查了下没有找到···
作者: 黑马振鹏    时间: 2012-7-11 14:39
唯一性?是不是就是第一条中的单继承?一个子类有唯一一个父类
作者: 刘笑    时间: 2012-7-11 14:52
java是支持多继承的,不过只是在接口中支持···
作者: 蔡鹏飞    时间: 2012-7-11 15:19
。_Smileヾ淡莣 发表于 2012-7-11 14:20
你确定有唯一性吗?好像是不确定性吧?

可能是我记错了吧,那不确定性是什么?
作者: 蔡鹏飞    时间: 2012-7-11 15:40
可能是我记错了吧,继承的三大特性除了单根性、传递性,还有个什么性的,这样知道的帮我总结下
作者: dev    时间: 2012-7-11 21:00
唯一性还没听过,是扩展性吧。A继承了B,A除了具备B的功能,
还可以扩展父类中没有的属于子类自己的特有功能。


作者: 。_Smileヾ淡莣    时间: 2012-7-11 21:24
继承的特点:
提高的复用性,但它使程序产生耦合性乃美中不足!
提高复用性:继承父类后,可以使用父类的所有非私有方法;而且单继承可由接口来弥补。使得子类可以减少代码的书写。还可以重写父类的方法以增加子类的功能。
一个子类只能继承一个父类这就是单继承:一个子类只能继承一个父类,但一个父类可以有多个子类,java不支持多继承
作者: 耿立刚    时间: 2012-7-12 15:34
Java继承(Java inheritance)

  Java继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。这种技术使得复用以前的代码非常容易,能够大大缩短开发周期,降低开发费用。比如可以先定义一个类叫车,车有以下属性:车体大小,颜色,方向盘,轮胎,而又由车这个类派生出轿车和卡车两个类,为轿车添加一个小后备箱,而为卡车添加一个大货箱。
  JAVA不支持多重继承,单继承使JAVA的继承关系很简单,一个类只能有一个父类,易于管理程序,同时一个类可以实现多个接口,从而克服单继承的缺点。
  在面向对象程序设计中运用继承原则,就是在每个由一般类和特殊类形成的一般—特殊结构中,把一般类的对象实例和所有特殊类的对象实例都共同具有的属性和操作一次性地在一般类中进行显式的定义,在特殊类中不再重复地定义一般类中已经定义的东西,但是在语义上,特殊类却自动地、隐含地拥有它的一般类(以及所有更上层的一般类)中定义的属性和操作。特殊类的对象拥有其一般类的全部或部分属性与方法,称作特殊类对一般类的继承。
  继承所表达的就是一种对象类之间的相交关系,它使得某类对象可以继承另外一类对象的数据成员和成员方法。若类B继承类A,则属于B的对象便具有类A的全部或部分性质(数据属性)和功能(操作),我们称被继承的类A为基类、父类或超类,而称继承类B为A的派生类或子类。
  继承避免了对一般类和特殊类之间共同特征进行的重复描述。同时,通过继承可以清晰地表达每一项共同特征所适应的概念范围——在一般类中定义的属性和操作适应于这个类本身以及它以下的每一层特殊类的全部对象。运用继承原则使得系统模型比较简练也比较清晰。
Java继承的特征

  (1)继承关系是传递的。若类C继承类B,类B继承类A,则类C既有从类B那里继承下来的属性与方法,也有从类A那里继承下来的属性与方法,还可以有自己新定义的属性和方法。继承来的属性和方法尽管是隐式的,但仍是类C的属性和方法。继承是在一些比较一般的类的基础上构造、建立和扩充新类的最有效的手段。
  (2)继承简化了人们对事物的认识和描述,能清晰体现相关类间的层次结构关系。
  (3)继承提供了软件复用功能。若类B继承类A,那么建立类B时只需要再描述与基类(类A)不同的少量特征(数据成员和成员方法)即可。这种做法能减小代码和数据的冗余度,大大增加程序的重用性。
  (4)继承通过增强一致性来减少模块间的接口和界面,大大增加了程序的易维护性。
  (5)提供多重继承机制。从理论上说,一个类可以是多个一般类的特殊类,它可以从多个一般类中继承属性与方法,这便是多重继承。Java出于安全性和可靠性的考虑,仅支持单重继承,而通过使用接口机制来实现多重继承。
java-继承-实例

  //建一个A类
  class A{
  //成员变量 其中num是实参
  int num=0;
  //成员方法,其中 i 是型参
  public A(int i){
  //输入int型文件输出下面
  System.out.println("aaaaaaaaaaaaaaaaaaa");
  System.out.println("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);
  System.out.println("bbbbbbbbbbbbbbbbbbbb");
  //这里的num是类B的.
  System.out.println("num= "+num);
  //如果想显示类A的num则需要用下列的super.num.这里注意num在类A中需是成员变量才可以.
  System.out.println("super.num= "+super.num);
  }
  }
  //建立测试类C
  public class C{
  //main
  public static void main(String aa[]){
  //new 一个对象B()
  new B();
  }
  }




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2