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.将构造方法私有。