抽象类可以理解为看不懂的类
抽象类的特点
抽象类和抽象方法必须用abstract关键字修饰
(abstract class 类名 { })
public abstract void eat();
抽象类不一定有抽象方法,有抽象方法的类一定是个抽象类或者是接口
抽象类不能实例化,(就是不能new)那么如何进行抽象类实例化?
由具体的子类实例化。其实这也是多态的一种,抽象类多态
抽象类的子类(要么是抽象类,要么重写抽象类中的所有抽象方法)
package lesson08;
public class demo01 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Cat cat = new Cat();
cat.eat();
cat.sleep();
Dog dog = new Dog();
dog.eat();
dog.sleep();
TangLaoYa tanglaoya = new TangLaoYa();
tanglaoya.eat();
}
}
abstract class Animal{
//抽象方法,抽象方法不实现,也就是不要写{}
public abstract void eat();
public abstract void sleep();
}
//The type Cat must implement the inherited abstract method Animal.eat()
//猫这个类,必须要实现Animal的抽象方法eat
class Cat extends Animal{
@Override//子类重写父类的方法
public void eat() {
// TODO Auto-generated method stub
System.out.println("吃饭。。");
}
public void sleep() {
System.out.println("卧着睡。。。");
}
}
class Dog extends Animal{
@Override
public void eat() {
// TODO Auto-generated method stub
System.out.println("吃饭啃骨头");
}
public void sleep() {
System.out.println("躺着睡");
}
}
abstract class Duck extends Animal{
}
class TangLaoYa extends Duck{
@Override
public void eat() {
// TODO Auto-generated method stub
System.out.println("吃虫子");
}
@Override
public void sleep() {
// TODO Auto-generated method stub
System.out.println("趴着睡");
}
}