创建一个包
**extends:**是java中子类继承父类的一种方式,是子类对父类的一种扩展(父亲没有实现的,儿子替他实现)
**使用方法:**class B extends A{}------------这样B类就可以使用A类中定义的public、protected的属性和方法了,也可以添加自己的属性和方法。(只支持单一继承,也就是一次只能继承一个父亲)
创建Test
package oop0426;public class test {public static void main(String[] args) {Master master=new Master();/*master.feed(new Dog()) ;master.feed(new Sheep()) ; master.feed(new Cat()) ; //实参传递的是子类对象master.feed(new Horse()) ;*/for(int i=0;i<4;i++){master.feed(master.getAnimal());}}
}
创建Pet
public abstract class Pet { //abstract只能用来修饰类或方法public abstract void eat();
}
主人喂食部分代码
package oop0426;public class Master {/*public void feed(Cat cat){System.out.println("主人喂食");cat.eat();}public void feed(Dog dog){System.out.println("主人喂食");dog.eat();}public void feed(Sheep sheep){System.out.println("主人喂食");sheep.eat();}*/public void feed(Pet pet){System.out.println("主人喂食:");pet.eat();}/*父类引用做方法签名的返回值,主法体中实际返回子类对象*/public Pet getAnimal(){Pet pet=null;int rnd=(int)(1+Math.random()*4);switch (rnd){case 1:pet=new Cat();break;case 2:pet=new Dog();break;case 3:pet=new Sheep();break;case 4:pet=new Horse();break;default:pet=new Cat();break;}return pet; //返回子类对象}
}
创建子类 调用 Pet
public class Dog extends Pet {@Override //公共部分代码public void eat(){System.out.println("Dog eat 骨头");}
}
运行结果