抽象类:
概念:使用abstract修饰的类
时机:
- 该类中存在抽象方法。
- 该类的对象只是一种概念,在现实世界不存在该类的对象
语法:
访问修饰符 abstract 类名{
…
}
访问修饰符:暂时都用public修饰,代表谁都能访问该类。
abstract 关键字:
含义是抽象
修饰成员:类 和 方法。
注意点:
- 抽象类中不一定具有抽象方法,可以有其他成员。
- 抽象类无法实例化
- 抽象类的目的就是被子类继承。
- 抽象类具有构造方法
- abstract不能与private一起使用,因为abstract修饰方法被子类重写,private修饰的方法只能本类使用,出现矛盾。
- abstract不能与final一起使用,因为abstract修饰类能被子类继承,final修饰的类不被子类继承。abstract修饰方法能被子类重写,final修饰的方法不被子类重写。所以出现矛盾。
- abstract不能与static一起使用,因为static修饰方法可以通过类名直接调用,但抽象方法没有方法体。abstract修饰方法必须通过实例化子类来调用,与static调用方法不一致。所以矛盾。
abstract修饰类:
abstract class Pet{
String name;
public void eat(){
}
}
class Dog extends Pet{
}
public class Demo {
public static void main(String[] args) {
Dog dog = new Dog();
}
}
结论:
- 抽象类中可以有非抽象方法。
abstract修饰方法
abstract class Pet{
String name;
public abstract void eat();
}
class Dog extends Pet{
@Override
public void eat() {
System.out.println("吃骨头");
}
}
public class Demo {
public static void main(String[] args) {
Dog dog = new Dog();
dog.eat();//吃骨头
}
}
结论:
- 有抽象方法,该类必须是抽象类,其子类必须将该抽象方法进行重写。除非该子类也是抽象类。