抽象类,即类名前加上abstract。
注意事项:
1. 含有abstract方法的类必须声明为抽象类。抽象类必须被继承,抽象方法必须被重写。
2. 抽象类不能被实例化。
3.抽象方法只需声明,不用实现。(相当于C++的纯虚函数)
举例:
abstract class Animal{
private String name;
public Animal(String name) {
this.name = name;
}
/*public void print(Animal a) {
System.out.println("name: "+a.name);
/*if(a instanceof Cat) { //如果a是猫
Cat c = (Cat)a; //类型强制转换
System.out.println("Cat's Voice is "+c.voice);
}
}*/
public abstract void voice();
}
class Cat extends Animal{
public String eyesColor;
public Cat(String n, String c) {
super(n);
eyesColor = c;
// TODO Auto-generated constructor stub
}
public void voice() {
System.out.println("猫叫声:Miao~Miao~~");
}
}
class Dog extends Animal{
String furColor;
Dog(String s,String c)
{
super(s);
furColor = c;
}
public void voice() {
System.out.println("狗叫声:Wang~Wang~Wang~");
}
}
class person{
private Animal pet;
public person(Animal animal) {
pet = animal;
}
public void petvoice(){
pet.voice();
}
}
public class TestObjectAlter {
public static void main(String[] args) {
Cat c2 = new Cat("Kitty","Pink");
Dog d2 = new Dog("Snube","White");
person p = new person(c2);
person p2 = new person(d2);
p.petvoice();p2.petvoice();
}
/*
* 输出结果:
* 猫叫声:Miao~Miao~~
狗叫声:Wang~Wang~Wang~
*/
}