《Head First Java》学习笔记 (八)接口与多态

2017-10-16  本文已影响0人  Joseph_Chu

多态(狭义,应即Override)

抽象类 (abstract class)

e.g.

Animal a //抽象类作为引用类型;
a = new tiger() // 赋值子类对象给父类引用;
a = new Animal() // WRONG! 不能初始化抽象类型;

抽象方法(abstract method)

e.g.
public void eat();//eat()方法没有方法体,直接以分号结束

抽象类与抽象方法总结

Object类

Object o = new cat();//o被引用到Object对象,只能调用Object的方法
o.eat();//非法!编译器通不过

接口(Interface)

其他

public abstract Dog{
    public void bark(){...}
}

public BigDog extends Dog{
    public void bark(){
    super.bark();
    ...//operations in the sub_class
}
}
//ArrayList是一个类,new ArrayList<Dog>()是一个对象
//<Dog>标记其实是告诉编译器,只接受Dog类型的参数
ArrayList<Dog> arr = new ArrayList<Dog>();
//但是实际上ArrayList内部还是用Object当做形参,所以可以处理各种对象
arr.add(new Dog());
//因为编译器限制了只能传入Dog类型的对象,
//所以取出时编译器可以放心的将Object转换为Dog
Dog d = arr.getIndex(0);
上一篇 下一篇

猜你喜欢

热点阅读