引言
我们知道java面向对象的三大特征,有封装、继承和多态,个人觉得封装和继承相对好理解一些,看到多态部分,感觉有点稍微晕晕的。今天又把Head first java这本书的相关内容读了一下,结合练习的小例子,简单谈一下我对抽象类和接口的理解。
多态(父类引用指向子类对象):
抽象类:
1.抽象类使用abstract关键字声明,加在类的前面
2.抽象类不能被实例化(不能通过new关键字进行实例化)
3.抽象类存在构造方法,只不过不是new而已
4.抽象类存在的意义:就是作为父类存在
5.抽象方法的原因:
1.所有子类都要用
2.所有子类的方法实现都不一样
6.含有抽象方法的类必须是抽象类,只有抽象类中有抽象方法
7.抽象方法使用abstract声明,不能有方法体({}也不能有)
8.当一个类继承自抽象类,必须实现该类的抽象方法,除非该类也是抽象类
9.抽象类不能用private修饰
10.抽象类可以有普通方法
接口(接口指向实现类):
1.所有方法都是抽象的,并且不能有普通方法和属性
2.接口类使用interface来声明 接口方法修饰 的public abstract可以省略
3.接口的实现类通过implements关键字实现接口
4.当一个类实现了接口时,该类必须实现该类接口中的所有方法,除非该类也是抽象类
5.当接口指向实现类的时候,只能调用接口中定义的方法
6.当接口作为方法的参数时,可以传入接口的实现类的对象
7,当接口作为方法的返回值时,可以返回接口的实现类的对象
8.一个类只能有一个父类,但是接口可以实现多个接口
9.类中没有多继承,但是接口可以实现多继承。
总结:
抽象类和接口都是抽象出来的存在,都是为了能够实现代码的复用,其存在的目的也只是为了让子类或者说实现类去实现其中定义的方法,类只能有一个父类,即一个类只能extends一个父类,但是一个类却可以implements多个接口,这样对程序实现的灵活就有更大的帮助。