目录
面向对象与面向过程
面向过程,面向对象都是一种看待问题、解决问题的思维方式。面向过程---强调的是功能行为 --- 关注的是解决问题需要哪些步骤---着眼点在于问题是怎样一步步的解决的,然后亲力亲为的解决这个问题。面向对象---强调的是完成功能的对象 --- 关注的是解决问题需要哪些对象---着眼点在于找到一个能够帮助解决问题的实体,然后委托这个实体解决问题。面向对象是相对面向过程而言面向对象是基于面向过程的。
继承
继承的特点
- 产生继承关系后, 子类可以使用父类中的属性和方法, 也可以定义子类独有的属性和方 法
- Java是单继承, 一个类有且只能有一个直接的父类,可以有若干个间接的父类,一个父类可以 有0个或者多个子类,子类之间互不影响
- 使用继承,可以简化代码,提高代码的复用性,提高代码的拓展性,增加代码的健壮性,最重要 的使类与类之间产生了继承的关系,是多态的前提
继承的语法
- 继承, 需要使用关键字 extends。 在定义类的时候, 使用 子类 extends 父类 的方式描 述继承。
- Object类:是java继承体系中所有类的父类,Object类没有父类.
//Phone类没有显示的父类,默认父类是Object类
class Phone {}
//Iphone类继承自Phone类
class Iphone extends Phone {
}
不可以被继承
- 构造方法
- 构造方法是为了创建当前类的对象的, 不可以继承给子类。
- 私有成员
- 私有成员只能在当前的类中使用, 不可以继承给子类。
- 注意:父类的私有成员,在子类中可见不可用
- 跨包子类
- 默认权限的属性、方法, 不可以继承给跨包的子类。
访问权限修饰符
访问权限修饰符, 就是修饰类、属性的访问级别。
方法重写
重写原理
- 当子类希望实现父类方法功能之外的一些功能时,如何处理?
分析:
方法 :callPhone父类 :Phone 打电话子类 :Iphone 打电话 + 唱歌子类 :Huawei 打电话 + 视频对于子类 Iphone: 打电话时可以直接调用父类的 callPhone 方法 , 但是唱歌功能无法实现 .
解决:
子类可以继承到父类中的属性和方法, 但是有些方法, 子类的实现与父类的方法可能实现的不同。 当父类提供的方法已经不能满足子类的需求时, 子类中可以定义与父类相同的方法。
- 当出现同名方法后,方法如何调用?、
这时子类方法完成对父类方法的覆盖, 又叫重写(
Override
)。
@Override
一个注解, 进行重写前的校验。 校验这个方法是否是一个重写的方法。 如果不是重写的方
法, 会直接报错。
重写的注意事项
- 方法名字必须和父类方法名字相同
- 参数列表必须和父类一致
- 方法的访问权限需要大于等于父类方法的访问权限
- 方法的返回值类型需要小于等于父类方法的返回值类型
super关键字
- 有时候,子类重写父类方法的时候,并不是要对父类的实现全盘推翻,而是对父类方法进行拓 展。
- 父类方法中的实现仍然需要, 但是还需要在父类方法的基础上进行拓展的实现, 此时就 需要使用super关键字调用父类的方法。
- this和super的对比
this:
是一种引用类型
,
代表当前对象
,
保存的是当前对象的地址
super:
代表的是当前对象的
父类
,
可以调用父类的成员
.
但是他不是引用数据类型
.
类与类之间的关系
1. 继承 --- 描述 : 谁是谁 例如 : 人是动物2. 组合 --- 描述 : 谁属于谁 例如 : 狗属于人 / 人拥有狗3. 传参
fifinal关键字的使用
定义
是一个关键字,最后的,最终的.被fifinal修饰的内容是不能再被改变的
可以修饰的内容
- 1.类:fifinal修饰的类不能有子类
- 2.成员变量:变量是一个终值,不能再被改变.所以在定义时必须先手动给一个值.
- 3.局部变量:被fifinal修饰的局部变量是一个终值,不能再被改变
- 4.方法:fifinal修饰的方法不允许重写
空白fifinal
- 描述:修饰成员变量的一种形式
- 如果是自定义的类可以在定义时先不给值,但是必须在构造方法中给值,即必须保证属性是被初始化了的.这种情况叫空白fifinal.
- 优点:空白fifinal在fifinal的使用上提供了更大的灵活性,因为一个类中的fifinal域可以做到根据 对象而有所不同,却又保持其恒定不变的特性.
Object类的使用
定义
Object
类
:
是
java
继承体系中所有类的父类
,Object
类没有父类
.
作为所有类的父类
,
它里面有
11
个方法
,
相当于所有子类都默认有这些方法
,
所以都很重要
.