当前位置:编程学习 > JAVA >>

关于java的一个疑问 高手解答下啊?

我创建了一个宠物抽象类(包含两个方法),里面包括猫和狗,新建猫类,里面包含抽象类的两个方法,在测试类里可以创建对象( 宠物 猫=new猫();),新建狗类,里面包含抽象类的一个方法,我把狗类设置成了抽象类了,怎么在测试类里无法创建对象了呢?该怎么在测试类里创建狗的对象呢?
追问:那我再怎么创建狗的这个对象呢?那我只能给狗创建一个新的类了吗?那岂不是不能调用抽象类的方法了?
答案:抽象类是不能直接new 的,猫和狗可以继承宠物类并实现两个抽象方法,这样猫和狗就可以new了
比如:
public abstract class Pet {
	public abstract void run();//跑
	public abstract void call();//叫
}
================================
public class Dog extends Pet {
	@Override
	public void call() {
		System.out.println("I am a dog.");
	}
	@Override
	public void run() {
		System.out.println("The dog is running.");
	}
}

=============================================
public class Cat extends Pet {
	@Override
	public void call() {
		System.out.println("I am a cat.");
	}
	@Override
	public void run() {
		System.out.println("The cat is running.");
	}
}

==============================================
public class RunTest{
   public static void main(String[] args){
       Cat cat  = new Cat();  //也可以写成Pet cat = new Cat();
       Dog dog = new Dog();//Pet dog = new Dog();
     cat.run();
     cat.call();
     dog.run();
     dog.call();

  }
}
其他:抽象类是不能实例化的,只能实例化抽象类的子类,当然,他的子类也不能是抽象类才行 楼上说的是对的,如果想实例化狗类对象,就不能把狗类设为抽象类。 

上一个:java中,为什么不能用JTextField设置掩码,而TextField可以?
下一个:用java编写一个应用程序,读取一个文本的内容。

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,