学习笔记-第六章接口、lambda与内部类《Java核心卷Ⅰ》

接口

1.简单的说,接口‘就好像’是纯抽象类(严谨的说,一定要加上就好像这几个字,原因参考4),接口没有实例域–接口没有实例
类与类之间存在共同特征,将这些共同特征提取出来,形成的就是抽象类
抽象类无法创建对象,抽象类无法实例化,所以抽象类是用来被子类继承的,final和abstract两个关键字不能同时使用,这两个关键字是对立的
抽象类有构造方法,是供子类使用的
抽象方法必须出现在抽象类中

interface这个关键词取代class来声明接口,接口中的方法自动是public,不需要加关键字public,在接口实现时,一定要加public
(接口中的域都是自动声明为 public static final

抽象类就是不能创建对象的类,用关键词abstract标记一个类是抽象类
2.抽象类可以带有抽象方法和非抽象方法,抽象类的方法没有内容,抽象方法只要写到()就结束,e.g.

public abstract void func();

3.如果类带有抽象方法,那么它一定是抽象类
4.Java只能单继承(extends是继承),多继承会导致‘致命方块’问题,
致命方块:

如果A类用一个方法fun1,B类继承了A,重写fun1得到fun1’,C类继承了A,重写fun1得到fun1’’,D类多继承,同时继承B,C,D类不重写方法,那么在调用D类fun1是,会不知道到底调用的是B中的fun1’还是C中的fun1’’

Java巧妙的引入了接口,来达到多继承的效果

public class Dog extends Animal implements Pet,Saveable,(...)

extends只能有一个,implements可以有多个,不同的继承类可以实现相同的接口,extends是继承,implements是实现接口(注意语法都有‘s’)
那么,这样就通过实现接口,达到了原本期望的多重继承的效果!

猜你喜欢

转载自blog.csdn.net/weixin_39666736/article/details/105848631