抽象类 abstract关键字

格式:public abstrace class 类名{

}

关键字 :abstract

抽象类和普通类的区别是什么?

抽象类是不能被实例化的 也就是不能使用new关键字,普通类是可以实例化的。

例如:

 abstract class GrandPa{
    public void farm() {System.out.println("grandpa 的农场");}
    public void makeMoney() {System.out.println("grandpa赚钱");}
    public abstract void goToCollege() ;
}

这时候new 一个GrandPa的对象就会出错。

如果一个类有抽象方法,那这个类必然是抽象类,反之 抽象类不一定有抽象方法。

定义一个抽象类的用途在哪里?

抽象的概念是不需要实际去做的,但是在实际应用中有两种场景用途:

1、父类某一个功能或者方法,需要子类强行去重写的。那么该方法必须是抽象的。

2、父类对于某一个方法,无法预知子类会怎么实现,那么该方法必须是抽象的。

例如:你的爷爷经营了一个农场,赚了钱,唯一一点是没有考上大学,之后你爷爷定义了一个方法,强行让你父亲去执行

 abstract class Father extends GrandPa{
     
    public void goToCollege() 
    {
        System.out.println("Father 完成了父类的方法");
    }
    public abstract void driverCar();
}

父亲完成了,考上大学了,则父亲成为基类(普通类),如果父亲未完成,也就是没有重写爷爷的goToCollege方法,那么父亲仍是抽象类

假设父亲考上大学了,却没有买车,定义driverCar方法让你去实现,那么你也得重写父亲的driverCar方法,否则你也成为抽象类。

class Son extends Father {
     public void driverCar() {
         System.out.println("Son 实现了Father的方法");
     }
 }

总代码

package com.qf.bigdata.test;

public  class ConceptCar {
    //define  定义
    public static void main(String[] args) {
        
        Son son=new Son();
        son.farm();
        son.makeMoney();
        son.goToCollege();
        son.driverCar();
    }

}
 abstract class GrandPa{
    public void farm() {System.out.println("grandpa 的农场");}
    public void makeMoney() {System.out.println("grandpa赚钱");}
    public abstract void goToCollege() ;
}
 abstract class Father extends GrandPa{
     
    public void goToCollege() 
    {
        System.out.println("Father 完成了父类的方法");
    }
    public abstract void driverCar();
}

 class Son extends Father {
     public void driverCar() {
         System.out.println("Son 实现了Father的方法");
     }
 }
 
 
 
 

看一下结果

再说一次抽象类的用途

定义一个抽象类的用途在哪里?

抽象的概念是不需要实际去做的,但是在实际应用中有两种场景用途:

1、父类某一个功能或者方法,需要子类强行去重写的。那么该方法必须是抽象的。

2、父类对于某一个方法,无法预知子类会怎么实现,那么该方法必须是抽象的。

猜你喜欢

转载自www.cnblogs.com/lovelingdu/p/9419385.html
今日推荐