JAVA一个抽象类的问题

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方法

你好,你理解了多态就好理解这个了,就是一个多态的应用。
看你的调用代码:
Animal a=new Person();
a.eat();
你是用父类的引用a指向了子类的对象 new Person(),java有多态性,就体现在这里,运行时,会动态绑定到对应子类的方法中。追问

能在说详细点吗!子类还隐式调用父类的eat 但我有个疑问父类是抽象类而且eat也是个抽象方法
听老师说父类的eat起着虚方法的作用,不理解虚方法是什么,而且百度也搜索不到JAVA的虚方法这个词

追答

你老师给你说的是C++里面的,准确的说就虚函数,因为Java是面向对象语言,所以把函数叫成了方法。这个你不要着急,仔细看看多态,多做几个练习,慢慢就理解了,初学,难免理解起来会困难。

温馨提示:内容为网友见解,仅供参考
无其他回答

java中一个类必须声明为抽象类吗?
不一定,抽象类可以没有抽象方法,但是如果一个类已经声明成了抽象类,即使这个类中没有抽象方法,它也不能再实例化,即不能直接构造一个该类的对象。如果一个类中有了一个抽象方法,那么这个类必须声明为抽象类,否则编译通不过。java中的抽象方法就是以abstract修饰的方法,这种方法只声明返回的数据类...

Java 抽象类能不能实例化
结论是:Java中的抽象类不能被实例化。让我们进一步探讨这个概念。抽象类是Java中一种特殊的类,它使用abstract关键字标记,其主要目的是为了定义类的公共接口,而不是创建具体的对象。抽象类可以包含成员变量、成员方法和构造方法,但不能直接通过new关键字实例化,因为它们通常不提供完整实现,而是留给子类...

抽象类必须提供抽象方法吗
抽象类并不是必须提供抽象方法。在Java中,抽象类可以包含抽象方法,但并不是必须的。一个抽象类可以不含任何抽象方法,仅仅作为其他类的父类提供一些共同的属性和方法。然而,如果一个类中包含至少一个抽象方法,那么该类就必须被声明为抽象类。抽象方法是一种没有实现代码的方法声明,它只定义了方法的...

java抽象类
1、抽象类可以不包括抽象方法,它反正不会去实例化,里面的方法是不是抽象的没有本质影响。2、但是含有抽象方法的类绝不能被实例化,否则执行这个方法的时候,怎么办?3、如果子类是非抽象的,那么它就必须实现父类中的抽象方法;否则,它继承来的抽象方法仍然没有方法体,也是个抽象方法,此时就与“...

java知识点丨java抽象类的作用是什么?
探讨抽象类在Java中的作用 在Java编程语言中,抽象类扮演着核心角色,为开发者提供了一种灵活的机制来定义共享行为和属性。理解抽象类的关键在于其与普通类和接口的区别。首先,让我们聚焦于抽象类的作用。抽象类允许我们定义一组共有的方法和属性,这些在子类中实现。当多个类拥有共同的行为和属性时,...

java 中抽象类虽然不能够创建对象,但是可以有构造方法,构造方法也可 ...
抽象类概念我就不多说了,简单说父亲是抽象类的类必须实现所有抽象方法,除非这个类也是抽象类。说明下你问的问题 1.首先你要搞清楚java里new这个关键字,new说的是要调用构造方法,分配内存空间,创建实例,这是显示的new出来一个对象,抽象类是不允许new的,但是抽象类可以有构造方法,我们知道通常创建...

java继承抽象类和接口问题
1.抽象类,不能实例化,也就是不能new,也就是不能创始对象。你可以这么理解:抽象,就是模糊的概念,相当于人们说的经常说的概念车之类的,为什么叫概念车,是因为只有个大概的模型,很多技术(在java里我们称之为方法)没有实现,所以不能造出车子(java中我们就是不能new啦)。当然只有解决所以...

请问java中抽象类能不能继承抽象类?能了就举例说明谢谢。
能,如果你写了一个类继承了某个抽象类,而你又没有重写其所有的抽象方法,那么这个类也只能声明为抽象类。如果重写了就如第三个类,不是抽象的了。Abstract class A{ public void afunction();} Abstract class B extends A{ } class B extends A{ public void afunction(){};} ...

抽象类可以实现多个接口吗
在Java编程语言中,一个抽象类不仅可以实现多个接口,而且还可以继承自另一个抽象类或非抽象类。这个特性使得抽象类可以拥有多个父类,从而可以获得多个接口提供的函数和行为。实现多个接口可以让抽象类具备多种不同的功能和能力。通过实现不同的接口,抽象类可以包含多种不同的方法定义和行为规范。这样可以...

JAVA中抽象类能不能定义引用?
抽象类是对数据的抽象,是不能实例化创建对象的,所以你这里new一个抽象类的对象就出错了你要重新定义一个类去继承抽象类。一般抽象类中有抽象方法的话,还得对所有的抽象方法都重写,然后去创建新的类才能引用

相似回答
大家正在搜