Java中的抽象类和抽象方法

时间:2022-05-01 20:01:24

Java中的抽象方法和抽象类:

abstract:关键字,可以用于修饰方法和类

抽象方法:不同类的方法是相似的,但是具体实现的内容又不太一样,没有具体的方法体。

抽象类:有抽象方法的类必须是抽象类

类与抽象类的关系是继承关系,但是需要重写抽象类的所有抽象方法,非抽象方法可以不用重写,
否则这个类就一定是抽象类,抽象类可以继承抽象类,也可以不用重写抽象方法。

package 抽象类;
public class Abstract {
    public static void main(String[] args) {
        cat cat=new cat();
        cat.eat();
        dog dog=new dog();
        dog.eat();
    }
}
abstract class Animal{
    public abstract void eat();
}
class cat extends Animal{

    @Override
    public void eat() {
        
        System.out.println("猫吃鱼啊");
    }

}
class dog extends Animal{

    @Override
    public void eat() {
        System.out.println("狗吃肉啊");
        
    }
    
}

抽象类的特点:

抽象方法只能在抽象类里面,抽象类里面可以有其他非抽象方法

抽象方法和抽象类必须被abstract修饰

抽象类不能创建对象(不能实例化)

抽象类和类的关系也是继承

一个类继承了抽象类要么重写所有的抽象方法,要么他自己是抽象类

抽象类的成员特点:

抽象类的成员特点:

成员变量:

可以有成员变量

可以有常量

成员方法:

必须能有抽象方法

也可以有非抽象方法

构造方法:

可以有构造方法,需要对抽象类的成员变量进行初始化

几个问题:

抽象关键字abstract不可以和哪些关键字共存?

private和final不可以与abstract共存,因为被final修饰的方法不可以被重写,而且被final修饰的类不能被继承;方法被private修饰为私有时,不能被重写。

抽象类中是否有构造函数?

有,抽象类也有成员变量,也需要被初始化,而且抽象类需要被继承,被继承的类需要有构造函数初始化成员变量。

抽象类可不可以没有抽象方法?

可以。

让一个类不可以创建对象,有什么方法?

1.用abstract修饰为抽象类。

2.将构造方法私有。