每日一学(3)——面向对象的三大特性-抽象

一、什么是抽象方法:

方法功能声明相同,但方法功能主体不同。那么这时也可以抽取,但只抽取方法声明,不抽取方法主体。那么此方法就是一个抽象方法。

二、抽象类的注意事项:

当定义了抽象函数的类也必须被abstract关键字修饰,被abstract关键字修饰的类是抽象类。

1、抽象的方法必须存在抽象类中,抽象类和抽象方法必须都用abstract修饰。

2、抽象方法是没有主体的方法

3、抽象类不能被实例化,就是不能被new的(原因:如果new了,对象.调用抽象方法,抽象方法没有主体根本就不能运行)

4、抽象类的使用:定义类继承抽象类,将抽象方法重写,定义子类的对象

三、抽象类/方法定义

抽象方法定义的格式:

public abstract 返回值类型方法名(参数);

抽象类定义的格式:

abstract class 类名 {

}

四、抽象类的特点:

1、抽象类和抽象方法都需要被abstract修饰。抽象方法一定要定义在抽象类中。

2、抽象类不可以直接创建对象,原因:调用抽象方法没有意义。

3、只有覆盖了抽象类中所有的抽象方法后,其子类才可以创建对象。否则该子类还是一个抽象类。

之所以继承抽象类,更多的是在思想,是面对共性类型操作会更简单。

4、抽象类中可以有抽象方法,也可以没有抽象方法。

5、抽象类的子类

            a,实现了抽象方法的具体类

            b,抽象类

五、抽象类的细节问题

1、抽象类一定是个父类? 

    是的,因为不断抽取而来的。

2、抽象类中是否可以不定义抽象方法。

是可以的,那这个抽象类的存在到底有什么意义呢?不让该类创建对象,方法可以直接让子类去使用

3、抽象关键字abstract不可以和哪些关键字共存?       

 (1)private:私有的方法子类是无法继承到的,也不存在覆盖,而abstract和private一起使用修饰方法,abstract既要子类去实现这个方法,而private修饰子类根本无法得到父类这个方法。互相矛盾。

 (2)final,暂时不关注,后面学

 (3)static,暂时不关注,后面学

4、注意如果子类继承了抽象类,重写了一部分的抽象方法,这个子类还是一个抽象类

六、抽象类的弊端

类与类之间的耦合度过高(紧密链接性)





猜你喜欢

转载自blog.csdn.net/weixin_42517286/article/details/80804184