package zzz;
// 创建继承
public class Demo2 {
public static void main(String[] args) {
Animal animal = new Animal();
animal.live();
animal.run();
System.out.println("******************************************");
Cat catAnimal = new Cat();
catAnimal.live();
catAnimal.run();
System.out.println("******************************************");
SmallCat smallCat = new SmallCat();
smallCat.run();
smallCat.live();
System.out.println("******************************************");
Dog dog = new Dog();
dog.run();
}
}
class Animal {
String animal = "animal";
public Animal() {
System.out.println("父类构造函数Animal结束.");
}
public void live() {
System.out.println(animal+" live ...");
}
public void run() {
System.out.println(animal + " can run ...");
}
}
class Dog extends Animal {
String animal = "dog";
public Dog() {
System.out.println("Dog() end.");
}
@Override
public void run() {
System.out.println(super.animal + " can run, " + this.animal + " can run ...");
}
}
class Cat extends Animal {
String animal = "cat";
public Cat() {
// 调用父类的构造函数
super();
System.out.println("子类构造函数Cat结束.");
}
@Override
public void run() {
System.out.println(super.animal + " can run, such as " + this.animal);
}
@Override
public void live() {
// 子类调用父类的方法
super.live();
}
}
class SmallCat extends Cat {
String animal = "small cat";
public SmallCat() {
// 继承子类默认会调用父类的无参构造函数,隐式存在一个super();调用父类Cat类的构造函数
System.out.println("子类构造函数SmallCat结束.");
}
@Override
public void run() {
System.out.println(this.animal + " can run .");
}
@Override
public void live() {
super.live();
}
}