笔记只记录自己学习时遇到的重点(复习),全文参考《Head First Java》
第三天
一、抽象类与接口
1、抽象类
编译器不会初始化抽象类
抽象类除了被继承过之外,是没有用途,没有值,没有目的
抽象方法没有实体
抽象方法只能在抽象类中,但抽象类中有非抽象方法
==>抽象方法的意义是:就算无法实现出方法的内容,但还是可以定义出一组子型共同的协议
==>这样做的好处是:多态(意味着很多形式)
2、接口
所有接口的方法都是抽象的,任何子类都必须实现这些方法
使用接口可以继承超过一个以上的来源,类可以实现多个接口
3、要点
如果不想让某个类被初始化,就以abstract这个关键词将它标记为抽象的
抽象的类可以带有抽象和非抽象的方法
如果类带有抽象的方法,则以类必定标识为抽象的
抽象的方法没有内容,它的声明是以分号结束
抽象的方法必须在具体的类中运行
java所有类都是Object直接或间接的子类
方法可以声明Object的参数或返回类型
不管实际上所引用的对象是什么类型,只有在引用变量的类型就是带有某方法的类型时才能调用该方法
Object引用变量在没有类型转换的情况下不能赋值给其他的类型,若堆上的对象类型与所要转换的类型不兼容,则此转换会在执行期产生异常
从ArrayList<Object>取出的对象只能被Object引用,不然就要用类型转换来改变
java不允许多重继承,因为那样会有致命方块的问题
接口就好像是100%纯天然抽象类
以interface这个关键词取代class来声明接口
实现接口时要使用implements这个关键词
class可以实现多个接口
实现某接口的类必须实现它所有的方法,因为这些方法都是public与abstract的
要从子类调用父类可以使用super