向上转型的三种方法

先定义两个类:

class Animal{
    
    
    String name;
    public Animal(String name) {
    
    
        this.name = name;
    }
    public void eat(){
    
    
        System.out.println("吃东西");
    }
}
class Dog extends Animal{
    
    
    String sex;
    public Dog(String name, String sex) {
    
    
        super(name);
        this.sex = sex;
    }
    public void call(){
    
    
        System.out.println("汪汪叫");
    }
}

第一种:

public class Test1{
    
    
    public static void main(String[] args) {
    
    
        Animal animal1 = new Dog("大黄","公");//直接赋值
    }
}

第二种:

public class Test1 {
    
    
    public static void main(String[] args) {
    
    
        Dog dog = new Dog("大黄","公");
        func(dog);
    }
    public static void func(Animal animal){
    
    
        //在函数中使用
    }
}

第三种:

public class Test1 {
    
    
    public static void main(String[] args) {
    
     
        Animal animal1 = func1(); //(1)
        Animal animal2 = func2(); //(2) 
    }
    //作为函数返回值使用
    public static Animal func1(){
    
     //(1)
        return new Dog("大黄","公");
    }
    
    public static Dog func2(){
    
        //(2)
        return new Dog("大黄","公");//不建议,很容易出错
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_74837727/article/details/130557114