关于java的一个疑问 高手解答下啊?
我创建了一个宠物抽象类(包含两个方法),里面包括猫和狗,新建猫类,里面包含抽象类的两个方法,在测试类里可以创建对象( 宠物 猫=new猫();),新建狗类,里面包含抽象类的一个方法,我把狗类设置成了抽象类了,怎么在测试类里无法创建对象了呢?该怎么在测试类里创建狗的对象呢?
追问:那我再怎么创建狗的这个对象呢?那我只能给狗创建一个新的类了吗?那岂不是不能调用抽象类的方法了?
我创建了一个宠物抽象类(包含两个方法),里面包括猫和狗,新建猫类,里面包含抽象类的两个方法,在测试类里可以创建对象( 宠物 猫=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编写一个应用程序,读取一个文本的内容。