class Animal{
String type;
String name;
int age;
int weight;
void eat(){
System.out.println("动物爱吃饭");
}
void breath(){
System.out.println("动物呼吸");
}
void sleep(){
System.out.println("动物在睡觉");
}
}
//Tiger类继承Animal类
class Tiger extends Animal{
String tigerType;
String from;
//Tiger自己的方法
void tigerRun(){
System.out.println("老虎在奔跑");
}
void breath(){
System.out.println("老虎是用肺呼吸的");
}
}
//Fish继承Animal类
class Fish extends Animal{
String fishType;
//Fish自己的方法
void swim(){
System.out.println("鱼在游泳");
}
void breath(){
System.out.println("鱼是用鳃呼吸");
}
}
class Dog extends Animal{
}
public class HumanDemo
{
public static void main(String[] args){
Tiger tiger=new Tiger();
Fish fish=new Fish();
Dog dog=new Dog();
tiger.breath();
fish.breath();
dog.breath();
}
}
这段代码运行结果:
老虎是用肺呼吸的
鱼是用鳃呼吸
动物呼吸
问题:子类对象在实例化时不应该先去调用父类中的无参构造方法么?运行结果不应该是:
动物爱吃饭
动物呼吸
动物爱睡觉
老虎是用肺呼吸的
鱼是用鳃呼吸
动物呼吸
我是新手,问题比较水,请大家帮忙解答
继承类的一般初始化过程:静态变量初始化、按照级别高低的顺序运行父类的构造方法、实例变量初始化、运行继承类的构造方法。
你的父类Animal没有写构造方法,那么就是默认的无参构造方法:
所以你的程序里没有输出任何内容,你可以在Animal添加如下内容在试试:
public Animal(){eat()、breath()、sleep()为成员方法,子类可以重写或者使用这些成员方法,但是在调用子类的同名方法时,父类的这些方法并不会执行。
欢迎追问
构造方法是不是前面一定要有 public
构造方法和一般方法区别在哪里
这个程序里面void eat(){};是不是一般方法
不写也可以,会有默认值吧,最好是写一个public,规范
构造最主要的是在创建对象的时候会自动执行,构造方法可以重载,自动执行的时候根据参数类型匹配。
构造方法和成员方法一个明显的区别在于定义的时候 无返回值类型,而且方法名和类名一致。
即public 类名(){}
而成员方法一般要添加返回值类型 void、int、String等等
void eat(){} 有返回值类型 void, 方法名也和类名不一样,所以为一般成员方法。