El polimorfismo de Java, transformación hacia arriba y hacia abajo, reescribe el método de iguales de la clase principal

El polimorfismo de Java, transformación hacia arriba y hacia abajo, reescribe el método de iguales de la clase principal

1. ¿Qué es el polimorfismo?

把子类的实例化对象赋值给父类的引用类型
    继承  Fu f=new Zi();   Pet p=new Dog();   Pet p=new Penguin();
	重写  f.a();
多种状态   多态=继承+重写

2. Polimórfico hacia arriba

 //向上转型
        Object a = new Animal();    //升1级  a创建了两个对象,一个Animal,一个Object,这里只是更倾向于Object
        Animal e1 = new Dog();      //升1级  e1创建了三个对象,一个Dog,一个Animal,一个Object,这里只是更倾向于Object
        Object e2 = new Dog();      //升2级   同理


        //向下转型
        //运行时报错,因为没有升直接降级
        /*Dog a1 = (Dog) new Animal();    //降1级
        Dog a2 = (Dog) new Object();    //降2级
        Animal a3 = (Animal) new Object();  //降1级*/

        Animal a1= (Animal) a;  //a Object类型,降到Animal  降1级
        Dog ee1= (Dog) e1;      //Animal - Dog类型    降1级
        Animal e3= (Animal) e2; //Object - Animal类型   降1级
        Dog e4= (Dog) e2;       //Object - Dog类型    降2级

        //instanceof
        System.out.println(a instanceof Object);    //true  a创建了两个对象,一个Animal,一个Object,所以为true
        System.out.println(a instanceof Animal);    //true
        System.out.println(a instanceof Dog);       //false a创建的对象中没有Dog,所以为false
        System.out.println("-------------------");
        System.out.println(e1 instanceof Object);   //true
        System.out.println(e1 instanceof Animal);   //true
        System.out.println(e1 instanceof Dog);      //true
        System.out.println("-------------------");
        System.out.println(e2 instanceof Object);   //true
        System.out.println(e2 instanceof Animal);   //true
        System.out.println(e2 instanceof Dog);      //true

Inserte la descripción de la imagen aquí
3. Anula el método equals de la clase principal.

//重写父类Object的equals方法--只有name和age相同,认为是同一个狗狗
    @Override
    public boolean equals(Object obj) {
    
    
        //对象 是否属于 类型
        if(obj instanceof Dog){
    
    
            Dog dog= (Dog)obj;
            return this.name==dog.name&&this.age==dog.age;
        }else {
    
    
            System.out.println("不要拿狗狗和其它的东西比");
            return false;
        }

    }

Supongo que te gusta

Origin blog.csdn.net/weixin_44889894/article/details/111184055
Recomendado
Clasificación