java—抽象类
概念(用abstract修饰)
对一组对象进行更高层级抽象时,形成现抽象的类,可以定义为抽象类
例如:小猫、小狗。。。都可以抽象为宠物类
含有抽象方法的类必须定义为抽象类
抽象方法
当一个类的某些操作无法具体实现时,这个操作可以定义为抽象方法。
用abstract修饰的抽象方法只有方法的声明,没有方法体。
使用
父类(宠物类)
public abstract class Pet {
//卖萌,不同的宠物卖萌的方式不同,该行为可以定义为抽象方法
public abstract void sellMeng();
}
子类
public class Cat extends Pet {
@Override
public void sellMeng() {
System.out.println("小猫喵喵喵~~");
}
}
public class Dog extends Pet {
@Override
public void sellMeng() {
System.out.println("小狗汪汪汪~~~~");
}
}
主人类
public class Master {
public void feed(Pet pet){
pet.sellMeng();//主人喂宠物,宠物卖萌
}
}
测试类
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
Master master=new Master();
Pet pet=new Dog();
//pet.sellMeng();
master.feed(pet);
pet=new Cat();
//pet.sellMeng();
master.feed(pet);
//feed()方法的形参是Pet抽象类引用,在调用方法时,需要传递子类对象
//也可以传递匿名内部类对象
master.feed(new Pet() {
//在匿名内部类中重写抽象类的抽象方法
@Override
public void sellMeng() {
// TODO Auto-generated method stub
System.out.println("小猪唠唠唠~~");
}
});
}
}
注意
子类继承了抽象类,子类需要重写抽象类中的所有抽象方法,如果没有重写,子类也需要定义为抽象类