ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Java基础 | (三)关键字:abstract(抽象)

Java基础 | (三)关键字:abstract(抽象) 关键字abstract抽象参考java关键字abstract(抽象)详解_abstractjava-CSDN博客举例 :车可以跑但具体几个轮子怎么跑不同的车自行车、汽车不同配置所以可以将车定义为抽象类public abstract class Car{ //抽象类车 public abstract void run(); //抽象方法跑 } //自行车 class bicycle extends Car { override public void run(){ System.out.println(骑行) } }一抽象类1、用abstract关键字来表达publicabstract class 类名{ } //表达形式2、不能被实例化也就是说不能直接new 一个抽象类但有自己的构造方法。原因抽象类本身代表一个类型无法确定为一个具体的对象所以不能实例化就合乎情理了只能由它的继承类实例化。3、抽象类 VS 接口interface接口中不能有实例方法去实现业务逻辑抽象类中可以有实例方法并实现业务逻辑比如我们可以在抽象类中创建和销毁一个线程池4、不能使用final关键字修饰原因需要通过继承去实现抽象方法而final修饰的类是无法被继承二抽象方法1、不能直接调用。原因抽象方法没有主体没有{ }包起来的业务逻辑跟接口中的方法有点类似。2、不能用private修饰。原因抽象方法必须被子类实现覆写而private权限对于子类来说是不能访问的所以就会产生矛盾3、不能用static修饰。原因如果用static修饰就能直接通过类名调用而抽象方法压根就没有主体没有任何业务逻辑这样就毫无意义了。三抽象类与抽象方法1.抽象类中可以没有抽象方法但有抽象方法的类一定是抽象类为了此类不能被实例化2.如果A类继承了B抽象类那么A必须覆写B中的全部抽象方法。当然不全部覆写也可以但这个子类就必须也是抽象类这样做就无意义了//抽象类Car public abstract class Car{ // 实例方法 public void example(){ } //抽象方法 run1 、run2 public abstract void run1(); public abstract void run2(); }// 子类bicycle class bicycle extends Car{ //通过继承实现抽象方法 override //必须覆写全部抽象方法 public void run1(){ } override public void run2(){ } }
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进