SummerVocation_Learning--java的抽象类

抽象类,即类名前加上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~
	 */
}


猜你喜欢

转载自blog.csdn.net/qq_41684261/article/details/81022773