Java Grammar-继承与多态

HeadFirst

继承

Has-A Is-A

A has a B. 说明B是A的实例

X is a Y.隐喻着 X可以做出任何Y可以做的事情(且还可能有更多的行为)。也就是说,在语言中,X是Y的孩子

IS A 是单箭头而不是双箭头

子类可以继承父类的成员

父亲可以通过存取权限确定子类是否能够继承某些特定的成员。

    public 类型的成员会被继承

    private类型的成员不会被继承

    final 这个修饰符,这表示他是继承树的末端,不能被继承。

存取控制,就算类不能被标识为私有,但它还是可以不标记共有。非公有的类自能被同一个包的类做出的子类。

继承注意事项

定出共同协议

一旦父类修改了方法的参数数目、类型活返回类型,子类会受到影响。

当定义出一组类的父类时,可以用子类的任何类来填补任何需要或期待父型的位置。

覆盖规则

方法就是合约的标志。

参数必须要一样,且返回类型必须要兼容(生命返回一样类型,或者该类型的子类)。

不能降低方法的存取权限。

方法的重载不是用来满足定义在父类的多态合约,所以重载的方法比较有扩展性。重载的方法只是刚好有i型昂同名字的不同方法,它与继承或多态无关。

抽象类

除了被继承过之外,是没有用途,没有值,没有目的的。

如果生命出一个抽象的方法,酒必须将类也标记为抽象的。不能再非抽象类中拥有抽象的方法。

抽象方法的意义:无法实现出方法内容,但还是可以定义出一组子类共同的协议。

好处:多态。

Object
1.object不是java正式的JAVA抽象类。因为他可以被所有类继承下来的方法都是实现程序代码,所以 没有必须被覆盖过的方法
2.可以部分覆盖Object类,强烈建议用自己写的类去覆盖hasCode()、equals()以及toString()。
3.ArrayList方法后面的<DotCom>是限制他的类型。
4.Object只会在县城的同步化上面进行。
5.Object的主要目的是:(1)作为多态让方法可以应付多种类型的机制(2)提供Java在执行期对任何对象都有需要的方法的实现程序代码(让所有的类都会继承到)。
6.为什么不把所有的类型都生命成Object?
   因为如果声明为Object类型,则对象只能调用Object的方法。而不是子类添加的方法。


多态

在多态下,引用与对象可以是不同的类型。

运用多态时,引用类型可以是实际对象类型的父类。

不能确定类型时候可以用 

if(o instanceof Dog){
    Dog d =(Dog) o;
}

Java非常注意引用变量的类型:

1.只能在引用变量的类确实有该方法才能调用它。

2.吧类的公有方法当做是合约的内容,合约时你对其他程序的承诺协议。

接口

由于在树形类图之外不能添加多余的类来让java类多重继承。Java使用接口来解决复用方法问题。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值