【javase复习】## day4 抽象类、接口 ##

抽象类、接口

抽象类的存在目的
1:狗是旺旺
2:鸟是叽叽喳喳
3:可以将父类的方法定义为狗叫让鸟继承父类重写叫的方法
1:鸟怎么确定是否要重写父类方法。
2:不重写,编译和运行都没有问题,只是执行鸟叫的方法就会出现狗叫
4:父类的方法很难确定。

所以实现抽象类的根本目的是让在运行时才会发生的错误提前到编译时期

抽象类的特点:

        1:有抽象函数的类,该类一定是抽象类。
        2:抽象类中不一定要有抽象函数。(**不重要,但是语法正确**)
        3:抽象类不能使用new创建对象
            1:创建对象,使用对象的功能,抽象类的方法,没有方法体。
        4:抽象类主要为了提高代码的复用性,让子类继承来使用。
        5:编译器强制子类实现抽象类父类的未实现的方法。
            1:可以不实现,前提是子类的也要声明为抽象的。

主要注意第三点: 抽象类为什么不能new创建对象?
因为抽象类的方法没有方法体,如果能创建对象,就能通过对象调用相应的方法,但是抽象类的方法是没有意义的,所以显然不能创建对象

另外 抽象类一定要有构造函数,是提供给子类初始化属性使用的。

abstract 不能与 static final private共同修饰一个方法

①如果与static共同修饰,则加载类文件后就可以通过类名.方法名调用该抽象方法,但是此时抽象方法没有方法体 是无意义的。
②如果与final共同修饰,则该方法不可重写,但是抽象方法不被子类重写是没有意义的。
③如果与private共同修饰,那么该方法只能被该类所调用,是没有意义的。






接口

接口要注意的事项 :
1. 接口是一个特殊的类。
2. 接口的成员变量默认的修饰符为: public static final 。那么也就是说接口中的成员变量都是常量。
3. 接口中 的方法都是抽象的方法,默认的修饰符为: public abstract。
4. 接口不能创建对象。
5. 接口是没有构造方法的。
6. 接口是给类去实现使用的,非抽象类实现一个接口的时候,必须要把接口中所有方法全部实现。

解释:
①接口也是类,所以接口的类文件也会加载到内存,可以通过接口直接调用成员属性。
④因为接口中的方法都是抽象方法,如果可以创建对象就可以调用方法,显然错误
⑤这一点和抽象类不一样,因为抽象类有构造方法便于继承抽象类的子类给属性赋值,但是由于接口中的成员变量都是public static final类型的,所以必须一开始就赋值,也就不需要再次调用构造函数赋值,所以也就不需要构造方法了。因为没有构造方法,所以也就无法定义静态代码块和构造代码块

java是 单继承, 多实现的
即只能有一个唯一父类,但是可以实现多个接口。

为什么?
如果 C 继承A 和 B , A和B中有同名方法, 那么当A没有重写的时候, 调用这个方法, 会不清楚调用哪个

如果C 实现 A和 B , A和B 中有同名方法, 因为A必须重写这个同名方法, 而A和B中的同名方法都是抽象方法, 所以是无所谓关心到底是重写了哪个接口的方法,其实是一样的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章