JAVA一个抽象类的问题
importp07.classexample.Animal;importp07.classexample.Bird;importp07.classexample.Pers...
import p07.classexample.Animal;
import p07.classexample.Bird;
import p07.classexample.Person;
import p07.classexample.Student;
public class TestAbstractClass01 {
public static void main(String args[]){
Animal a=new Person();
a.eat();
Person p=new Person();
System.out.println(p.getAge());
Bird b=new Bird();
System.out.println(b.getAge());
System.out.println("-------------------");
Student aa=new Student(80);
System.out.println(aa.getAge());
}
}
-----------------------------------------------
public abstract class Animal {
private int age;
public Animal(){
}
public Animal(int age){
this.age=age;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public abstract void eat();
}
----------------------------------------
public class Person extends Animal{
private int age;
public Person(){
super(80);
}
public Person(int age){
this.age=age;
}
public void eat(){
System.out.println("人在吃!");
}
}
我知道person类继承于animal而且animal是个抽象类,那么怎么解释a.eat()调用了子类的eat方法 展开
import p07.classexample.Bird;
import p07.classexample.Person;
import p07.classexample.Student;
public class TestAbstractClass01 {
public static void main(String args[]){
Animal a=new Person();
a.eat();
Person p=new Person();
System.out.println(p.getAge());
Bird b=new Bird();
System.out.println(b.getAge());
System.out.println("-------------------");
Student aa=new Student(80);
System.out.println(aa.getAge());
}
}
-----------------------------------------------
public abstract class Animal {
private int age;
public Animal(){
}
public Animal(int age){
this.age=age;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public abstract void eat();
}
----------------------------------------
public class Person extends Animal{
private int age;
public Person(){
super(80);
}
public Person(int age){
this.age=age;
}
public void eat(){
System.out.println("人在吃!");
}
}
我知道person类继承于animal而且animal是个抽象类,那么怎么解释a.eat()调用了子类的eat方法 展开
1个回答
展开全部
你好,你理解了多态就好理解这个了,就是一个多态的应用。
看你的调用代码:
Animal a=new Person();
a.eat();
你是用父类的引用a指向了子类的对象 new Person(),java有多态性,就体现在这里,运行时,会动态绑定到对应子类的方法中。
看你的调用代码:
Animal a=new Person();
a.eat();
你是用父类的引用a指向了子类的对象 new Person(),java有多态性,就体现在这里,运行时,会动态绑定到对应子类的方法中。
追问
能在说详细点吗!子类还隐式调用父类的eat 但我有个疑问父类是抽象类而且eat也是个抽象方法
听老师说父类的eat起着虚方法的作用,不理解虚方法是什么,而且百度也搜索不到JAVA的虚方法这个词
追答
你老师给你说的是C++里面的,准确的说就虚函数,因为Java是面向对象语言,所以把函数叫成了方法。这个你不要着急,仔细看看多态,多做几个练习,慢慢就理解了,初学,难免理解起来会困难。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询