JAVA学习之第三周记录

1.继承

继承让我们更加容易实现类的扩展。比如,我们定义了人类,再定义Boy类就只需要扩展人类即可。实现了代码的重用,不用再重新发明轮子(don't reinvent wheels)。
从英文字面意思理解,extends的意思是“扩展”。类是父类的扩展。现实世界中的继承无处不在。

继承的要点

1.父类也称作超类、基类、派生类等。
2.Java中只有单继承,没有像C++那样的多继承。多继承会引起混乱,使得继承链过于复杂,系统难于维护。(接口可以有多继承,类有单继承)
3.Java中类没有多继承,接口有多继承。
4.子类继承父类,可以得到父类的全部属性和方法(除了父类的构造方法),但不见得可以直接访问(比如,父类私有的属性和方法)。
5.如果定义一个类时,没有调用extends,则它的父类是:java.lang.Object。(可以使用ctrl+T的查看类的继承结构)

instanceof是二元运算符,左边是对象,右边是类;当对象是右面类或子类所创建对象时,返回
true;否则,返回false。

2.方法的重写

子类通过重写父类的方法,可以用自身的行为替换父类的行为——override。

方法的重写需要符合下面的三个要点:
1.“==” :方法名、形参列表相同。
2.“>=”:返回值类型和声明异常类型,子类小于等于父类。
3.“<=”:访问权限,子类大于等于父类。

3.Object类

Object类是所有Java类的根基类,也就意味着所有的Java对象都拥有Object类的属性和方法。 

 Object类中定义有public String toString()方法,其返回值是String类型。

4. equals

“==”代表比较双方是否相同。如果是基本类型则表示值相等,如果是引用类型则表示地址相等即是同一个对像。
Object 类中定义有:public boolean equals (Object)方法,提供定义“对象内容相等”的逻辑。

重写equals

 

 

 得到equals重写结果


JDK提供的一些类,如String、Date、包装类等,重写了Object的equals方法,调用这些类的
equals方法,x.equals (y),当x和y所引用的对象是同一类对象且属性内容相等时(并不一定是相同
对象),返回true 否则返回 false。

5.super
super是直接父类对象的引用,可以通过super来访问父类中子类被覆盖的方法或属性 。

 运行结果

构造方法的顺序
构造方法的第一句总是super(…)来调用父类对应的构造方法,所以流程就是先向上追溯到object,然后再向下依次执行类的初始化会和造方法执导,当前子类为止。(静态初始化会调用顺序,与构造方法调用顺序一样)

 属性/方法查找顺序:(比如:查找变量h)
1.查找当前类中有没有属性h
2.依次上溯每个父类,查看每个父类中是否有h,直到Object
3.如果没找到,则出现编译错误。
4.上面步骤,只要找到h变量,则这个过程终止。

6.封装

 编程中封装的具体优点:
1.提高代码的安全性。
2.提高代码的复用性。
3.“高内聚”:封装细节,便于修改内部代码,提高可维护性。
4.“低耦合”:简化外部调用,便于调用者使用,便于扩展和协作

访问控制符

Java是使用“访问控制符”来控制哪些细节需要封装,哪些细节需要暴露的。Java中4种“访问控
制符”分别为private、default、protected、public,它们说明了面向对象的封装性,所以我们要利
用它们尽可能的让访问权限降到最低,从而提高安全性。

1.private表示私有,只有自己类能访问
2.default表示没有修饰符修饰,只有同一个包的类能访问
3.protected表示可以被同一个包的类以及其他包中的子类访问
4.public表示可以被该项目的所有包中的所有类访问

 封装使用细节

快速生成get/set()的快捷键

 

 

类的属性的处理:
1.一般使用private访问权限。
2.提供相应的get/set方法来访问相关属性,这些方法通常是public修饰的,以提供对属性的赋值
与读取操作(注意:boolean变量的get方法是is开头!)。
3.一些只用于本类的辅助性方法可以用private修饰,希望其他类调用的方法用public修饰。

7.多态

多态指的是同一个方法调用对象不同,可能会有不同的行为,现实生活中,同一个方法,具体实现会完全不同。
多态的要点:
1.多态是方法的多态,不是属性的多态(多态与属性无关)。
2.多态的存在要有3个必要条件:继承,方法重写,父类引用指向子类对象。
3.父类引用指向子类对象后,用该父类引用调用子类重写的方法,此时多态就出现了。
对象的转型casting
父类引用指向子类对象,我们称这个过程为向上转型,属于自动类型转换。
向上转型后的父类引用变量只能调用它编译类型的方法,不能调用它运行时类型的方法。这时,我们就需要进行类型的强制转换,我们称之为向下转型!

8.final关键字

( final修饰的成员变量,在未初始化时,JAVA虚拟机不会为final修饰的变量默认初始化,所以要·在声明时立即初始化或者在构造方法中进行初始化。)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尚膳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值