学习笔记 韩顺平 零基础30天学会Java(2024.7.11)

P306 养宠物引出多态

      主人喂食问题:随着动物的增多,feed方法会越来越多,不利于代码的复用

            public void feed(Dog dog, Bone bone){

                                          System.out.println(“主人” + name + “ 给 ” + dog.getNmae() + “ 吃 ” + bone.getName);

}

public void feed(Cat cat, Fish fish){

                                          System.out.println(“主人” + name + “ 给 ” + cat.getNmae() + “ 吃 ” + fish.getName);

}

P307 方法的多态

      多态(多种形态)的基本介绍:方法或对象具有多种形态

      多态的具体体现:1.方法的多态(重写、重载)

P308 对象的多态

P309 多态快速入门

      对上面喂食代码的优化:

            public void feed(Animal animal, Food food){

                                          System.out.println(“主人” + name + “ 给 ” + animal.getNmae() + “ 吃 ” + food.getName);//animal编译类型是Animal,可以指向Animal子类的对象,food同理

}

P310 向上转型

      父类的父类也是我的父类

      structure可以看应该类所有的方法和属性

      写代码时能不能调用是根据编译器来的,因为在编译阶段能调用那些成员是由编译来决定的(Animal animal = new Cat();animal.catch();//不能运行,因为catch方法是Cat特有,而编译时是Animal类)

      最终的运行效果根据运行类型,即调用方法时,从子类开始查找,然后调用,规则和前面将的方法调用一致(animal.eat();//调用的是Cat类里面的eat方法,因为运行时是Cat类型)

P311 向下转型

P312 属性重写问题

P313 多态课堂练习1

      double d = 13.4;

long l = (long)d;//double类型可以强转为long,之前学过的字符之间的转换也是向下转型中的一种

int I = 5;

boolean b = (boolean)in;//不对,因为in指向的是int类型,int类型比boolean类型高,联系到之前说的animal那个例子,animal可以转是因为他的运行类型实际上是cat

P314 多态课堂练习2

P315 动态绑定机制

      问题1:代码没有改动时,对输出的值分析错误,return i这个在那个类里面就返回那个类里面的I,因为这是该类中的,权限没有问题

      如何通过这个代码理解动态绑定机制:去掉B中的sum()、sum1()方法,分析输出的结果(结果分别是30和20)

  • 16
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值