【7】Head First Java 学习笔记

HeadFirst Java

本人有C语言基础,通过阅读Java廖雪峰网站,简单速成了java,但对其中一些入门概念有所疏漏,阅读本书以弥补。

第一章 Java入门
第二章 面向对象
第三章 变量
第四章 方法操作实例变量
第五章 程序实战
第六章 Java函数库
第七章 继承与多态


设计继承树

继承:子类继承父类的状态与行为(实例变量与方法)

class cat extends animals

1.找出具有共同属性和行为的对象
2.设计代表共同状态和行为的类
3.子类是否某项行为有不同的方式
4.使用共同行为的子类,从而找出更多抽象化机会(犬科:狼与狗;猫科:狮子、老虎与猫)

调用方法:JVM从最低阶找起,编译会确保方法可调用到,但不在乎从哪个类(哪一层)找到。
IS-A测试法: 某物是否该继承某物,狼是犬科,犬科是动物,狼也是动物。
X IS-A Y,X可以做Y可以做的事以及更多,方式不一定相同。

存取权限 access level

private>default>protected>public
private不可继承
public 可以继承
继承的方法可以覆盖,实例变量不可覆盖

继承的意义

避免重复代码

定义共同协议

对其他程序声明:该类的所有子类可以用这些方法进行工作
Animal类拟出所有动物子类的协议:可以执行4个方法,包括其参数、返回类型

多态

引用变量的类型 可以是实际对象的父类

一般声明:Dog mydog = new Dog();引用变量的类型与对象的类型必须相符!
多态: Animal mydog = new Dog(); 两者可以不相同
多态数组:Animal[] pets = new Animals[5];
pets[0] = new Dog();pets[1] = new Cat();

参数和返回类型同理

覆盖

例子:Application类 boolean turnon(); Toaster子类 boolean turnon(int num)
编译时期:编译器寻找class检查是否可以调用方法,可以通过。
运行时期:JVM寻找的是对象,若编译器通过调用,则能通过的方法必是同样名、参数、返回的方法。所以只会调用Application版本
即:Toaster没有成功覆盖方法,调用无参数turnon时,用的还是Application的,而toster的turon属于一个重载(不符合预期覆盖想法)
(以上有点模糊,需要实测)
规则:
1.参数一样,返回类型兼容
2.不能降低方法的存取权限,只可更为开放

重载

意义:让方法存在名称相同,参数不同的情况。——有相同名字的不同方法,与覆盖方法是没关系的。
规则
1.返回类型可以不同
2.不能只改变返回类型,需要改变参数类型或个数
3.可以改存取权限

重载与 继承和多态 都无关!

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值