抽象类和抽象方法

------------恢复内容开始------------

1.为什么要有抽象类?

  随着子类一直继承父类,子类会变得越来越具体,(比如说父类是人,子类分为男人和女人,再继承下去,分为不同职业的人,...一直细分下去),相反的,父类会变得越来越通用,既然这样,将通用性做到极端,不定义任何的具体实例,这样的类叫做抽象类。

2.abstrac关键字的使用

 

2.1抽象类

  一般的我们声明一个类如下:

class Person{
    String name;
    int age;

    public void hello(){
        System.out.println("hello!");
    }

    public void eat(){
        System.out.println("eating....");
    }
}

声明一个抽象类也很简单 加上abstract关键字就行

abstract class Person{
    String name;
    int age;

    public Person(){

    }
    public Person(String name,int age){
        this.name = name;
        this.age = age;
    }
    public void hello(){
        System.out.println("hello!");
    }

    public void eat(){
        System.out.println("eating....");
    }
}

之后写一个test测试一下

public class AbstrcatTest {
    public static void main(String[] args) {
        AbstrcatTest test = new AbstrcatTest();
        Person p1 = new Person(); //'Person' is abstract; cannot be instantiated
    }
}

引出第一个结论 抽象类是不能实例化的

其次 抽象类中一定有构造方法,便于子类实例化时使用

2.2抽象方法

抽象方法没有方法体,只有方法的声明

包含抽象方法的类一定是抽象类,反之,抽象类中可以没有抽象方法

 

若子类重写了所有父类中所有的抽象方法,则子类可以实例化

否则,子类也只能声明为抽象类

 

3.为什么要有抽象类

抽象类是用来模型化那些父类无法确定全部实现,而由子类提供具体实现的对象的类。

例如: 父类为几何图形,子类为圆和正方形,父类子类中都有求面积的方法,但父类没有具体的几何图形,所以写个求面积的方法是不太现实的,因此产生了只写方法声明而不写方法体的情况。

 

------------恢复内容结束------------

posted @ 2022-01-06 14:57  Rook1e  阅读(90)  评论(0)    收藏  举报