关键字之abstract(抽象)

抽象方法:表达概念而无法实现具体代码的函数

抽象类:表达概念而无法构造出实体的类,且不能生成对象,通常被继承(extends)

1)抽象方法

1.抽象方法没有方法体   public abstract viud run();   这就是一个抽象方法

2.抽象方法不能是private的   因为要在继承的子类中实现,你把抽象方法私有化了,子类都没法覆写,那就没意义了

3.抽象方法也不能是static的  具体原因是因为没有方法体  没有实现你怎么给他静态

2) 抽象类

1.抽象类的修饰为   (public) abstract class User{}

2.抽象类无法被实例化, 这个怎么理解呢  抽象类本身就是一个类型,无法具体为一个对象,只能由他的继承类实例化

3.,抽象类有自己的构造器.要被继承的, 子类是依赖于父类的构造器来实例化自己的.

4.抽象类和接口(interface)有很大的不同, 接口中不能有自己的业务逻辑和实现方法,而抽象类可以有自己的业务逻辑和实现方法,比如我们可以在抽象类中实现一个线程池的创建和销毁

5.抽象类不能用final来修饰,因为抽象类是需要被继承来实例化的,但是被final修饰的类是不能被继承的,所有有所矛盾

抽象类和抽象方法的关联

1.一个类中如果有一个抽象方法,那么这个类一定是抽象类,  但是抽象类中一个抽象方法都没有是可以的,这么做可以防止该类被实例化

2.抽象类的子类必须覆写抽象类的所有抽象方法,如果不完全覆写的话,就算继承了也还是一个抽象类,无法被实例(没意义)

 为啥要用抽象类

抽象类提取了事物的共性,使得代码易维护,易拓展

抽象类可以在很大程度上在使用方法的覆写来实现多态的属性.

猜你喜欢

转载自blog.csdn.net/qq_36117744/article/details/86572615