欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

24、抽象类、抽象方法

程序员文章站 2022-06-16 17:01:29
...

1.abstract 抽象修饰符,可以修饰类、方法
2、当多个类存在相同的功能,但是功能的主体不同,这是我们进行向上抽取,只抽取功能的定义,不抽取功能的主体

3、抽象类的特点
01、抽象方法一定要在抽象类中
02、抽象类和抽象方法必须要被abstract关键字修饰
03、抽象类是不能被创建对象,因为调用抽象的方法没意义
抽象类中的方法,没有方法主体
04、抽象类中的抽象方法要被调用,必须由子类重写抽象类中的抽象方法,然后创建子类对象来调用(用多态或者子类直接创建)
Animal c=new Cat(); c.sing()
Cat c=new Cat(); c.sing();

abstract  class Animal {
    abstract void sing();
}
class Cat extends Animal{
    void sing(){
        System.out.println("喵喵的唱歌");
    }
}
public class Test{
public static void main(String[] args){
        Animal c=new Cat();
        c.sing();
        }
}

05、抽象类中可以定义非抽象的方法,即使该类中没有抽象方法。有时我们需要该类不能被new关键字创建对象,可以用abstract将此类抽象

说明:Animal类被abstract修饰也是有对象的,只不过不是new出来的,因为java中每个类默认会创建构造函数,而子类构造函数第一句默认会有super(),调用父类Animal的无参构造函数,对父类进行初始化,所以Animal类在内存中是有对象存在

//抽象类中可以有非抽象方法
abstract  class Animal {
    abstract void sing();
    void show(){
        System.out.println("你好");
    }
}
class Cat extends Animal{
    void sing(){
        System.out.println("喵喵的唱歌");
    }
}
public class Test{
public static void main(String[] args){
        Animal c=new Cat();
        c.show();
        }
}

06、子类如果只重写父类中的一部分抽象方法,那么该子类还是一个抽象类,(因为子类继承了父类的抽象方法,抽象方法一顶定义在抽象类中)。如果抽象类中的抽象方法要被使用,子类必须重写抽象类中的所有方法