public class Animal {
public void voice(){
System.out.println(“动物叫”);
//在方法中指的是调用该方法的那个对象
// 子类覆盖父类的方法
// 方法名称相同
// 返回值类型相同
// 参数列表相同
// 访问修饰符不能比父类更严格
//多态 父类的引用指向子类的对象,调用同样的方法 根据对象的不同,产生的结果不同
}
}
public class Cat extends Animal{
public void voice (){
System.out.println(“喵喵喵”);
}
}
public class Dog extends Animal {
public Dog(){
}
@Override//表示该方法进行重载
public void voice() {
System.out.println("狗叫 汪汪汪");
}
public void voice(String name) {
System.out.println("看见"+name+"就咬");
}
public void voice(int age) {
System.out.println("看见"+age+"就摇尾巴");
}
public static void main(String[] args) {
Dog dog=new Dog();
dog.voice();
dog.voice("张三");
dog.voice(18);
//方法重载 方法名相同 参数列表不同
Animal animal=new Animal();
Animal animal1=new Cat();
Animal animal2=new Dog();
animal1.voice();
animal.voice();
if(animal2 instanceof Dog ){
//判断animal2是否为狗
((Dog)animal2).voice(19);
//强制类型转换 我们知道是狗 但是计算机不知道是狗 所以要强制转换
}
}