Java学习2023.7.12(重写、重载 多态)

1.重写与重载的区别

重写:在子类中对父类中的方法进行重新书写代码,参数相同

重载:在一个类中对方法进行重写,参数可以不同

 

 2.方法重写和方法重载的区别

 3.Object

object类是所有类的父亲

 4.object类的equals()方法

 重写equals()(部分类例如String中已经重写过了)

 5.多态

方法重写是实现多态的前提

这里Pet 是父类,CatDog是子类

 向上转型

子类指向父类(从右往左看)

//创建Dog类对象
        //向上转型:父类的引用(对象名)指向子类的实例(对象)
        Pet pet1 = new Dog("来福",100,99,"哈士奇");
        //向上转型中,父类的引用调用方法的时候,先去指向的子类中查找有没有调用的这个方法,
//有,就调用,没有,就调用父类中的这个方法。调用的这个方法在子类中是重写后的方法
        pet1.show();
        //父类引用只能调用子类中重写的方法,不能调用子类中特有的方法,
//如果要调用,要将父类的引用转换为子类对象,需要进行强制类型转换(向下转型)
//        pet1.eat();

向下转型(部分类似强转)

//向下转型:子类的引用(对象名)指向父类的引用(对象名)
        Dog dog2 =(Dog)pet1;
        dog2.eat();

        System.out.println("==================================");

        pet1 = new Cat("Tom",100,99,"蓝白色");
        pet1.show();
        //父类的引用无法调用子类中特有的方法,需要进行向下转型
//        pet1.sleep();
//        Cat cat2 = (Cat)pet1;
//        cat2.sleep();

        System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
        //在向下转型过程中,如果没有转换为对应的子类对象,会报类型转换异常,所以在转型之前对类型进行判断,使用instanceof运算符进行判断
        //Dog dog3 = (Dog)pet1;//ClassCastException:类型转换异常
        //dog3.eat();
        if(pet1 instanceof Dog){
            Dog dog3 = (Dog)pet1;
            dog3.eat();
        }else if(pet1 instanceof  Cat){
            Cat cat2 = (Cat)pet1;
            cat2.sleep();
        }

6.抽象类

抽象方法:使用abstract修饰的方法为抽象方法

        1)抽象方法没有方法体

        2)抽象方法所在的类要定义为抽象类

        3)抽象方法在子类要进行重写,如果子类不重写父类中的抽象方法,子类也要定义为抽象类

 抽象类:使用abstract修饰的类为抽象类

        1)抽象类中可以有抽象方法,也可以没有抽象方法

        2)抽象类中可以定义非抽象方法

        3)抽象类不能实例化(不能通过new关键字来创建对象),但是可以通过多态的形式将抽象类的引用指向子类对象

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值