继承 方法重写 组合(尚学堂视频学习总结_003)

来源:互联网 发布:windows hadoop安装包 编辑:程序博客网 时间:2024/05/16 07:10

类中只有单继承
老祖宗:Object类,间接或直接继承于此类

子类继承父类的属性和方法,除了父类的构造方法
普通方法默认都有两个参数:this ,super;
new子类对象时,内存中普通方法是用super指向父类对象

构造方法:如果要继承父类的,第一句默认是super()  ??? 也是往上一层层
普通方法:对象调用时在当前类找,如果没有,则由隐式参数找到上一级(父类)一直往上找

【override】
跟方法重载overload没有任何关系
方法重写 --> 类的继承关系 --> 方法名、参数、返回类型一样!

权限:重写的方法不能把权限范围缩小了,这样会影响父类的方法范围?!
如原来父类是public,子类却变成protect!错的!

异常:子类还不能比父类抛出更多的异常!

【构造方法与继承】
  • 区分大小写。再次强调方法名与类名必须相同,并且没有返回值

场景:
父类:无参构造方法,有参构造方法
子类:同上
结果:
new子类无参:依次调用父类无参,子类无参
new子类有参:依次调用父类无参,子类有参

如果注释掉父类的无参构造方法,则子类无参构造方法编译时便会出错了。
那是因为JVM调用子类无参构造方法时,只要父类显示定义了构造方法,则会去父类找无参构造方法。
找不到,因此报错。
解决方法:在子类构造方法中:第一句加上super(参数); 这里参数根据父类已写明的构造方法来。
如果父类中没有无参构造方法,子类无参构造方法没有参数,则上面super(参数),可以传递一个常量即可达到调用父类有参构造方法的目的。

人家结论:子类如果有多个构造函数的时候,父类要么没有构造函数,
让编译器自动产生,那么在执行子类构造函数之前先执行编
译器自动产生的父类的缺省构造函数;要么至少要有一个显
式的缺省构造函数可以让子类的构造函数调用。
http://bbs.csdn.net/topics/100047866

【组合与继承】
都可以代码复用
组合:
子类内:父类作为子类的属性,先在子类new好,后面子类方法中可直接使用该父类对象





 
0 0