您的位置:首页 > 其它

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

2016-02-20 18:44 316 查看


类中只有单继承

老祖宗:Object类,间接或直接继承于此类

子类继承父类的属性和方法,除了父类的构造方法

普通方法默认都有两个参数:this ,super;

new子类对象时,内存中普通方法是用super指向父类对象

构造方法:如果要继承父类的,第一句默认是super() ??? 也是往上一层层

普通方法:对象调用时在当前类找,如果没有,则由隐式参数找到上一级(父类)一直往上找

【override】

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

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

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

【构造方法与继承】

区分大小写。再次强调方法名与类名必须相同,并且没有返回值

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

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

人家结论:子类如果有多个构造函数的时候,父类要么没有构造函数,

让编译器自动产生,那么在执行子类构造函数之前先执行编

译器自动产生的父类的缺省构造函数;要么至少要有一个显

式的缺省构造函数可以让子类的构造函数调用。

http://bbs.csdn.net/topics/100047866

【组合与继承】

都可以代码复用
组合:
子类内:父类作为子类的属性,先在子类new好,后面子类方法中可直接使用该父类对象
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: