第 四 - 六 章 面向对象
Posted 1994jinnan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第 四 - 六 章 面向对象相关的知识,希望对你有一定的参考价值。
面向对象
面向对象学习的三条主线:
1.Java类及类的成员:属性、方法、构造器;代码块、内部类
2.面向对象的三大特征:封装性、继承性、多态性、(抽象性)
3.关键字:this、super, 权限修饰符, static, final, abstract、interface, package、import等
-------------------------------------------------------------------------------------------------------------
①主线一: java类及类的成员
1 属性(成员变量)
1.1 属性(成员变量) VS 局部变量
1.2 属性赋值的先后顺序
2 方法
2.1 方法的声明及说明
补充:
返回值类型:return关键字的使用
形参列表:可变形参的方法
2.2 java的值传递机制 - 内存解析
2.3 面试题:重载与重写(覆盖)的对比 ※
重载:在同一个类中的两个方法,方法名相同,参数列表不同 -----> “两同一不同”; 如果仅仅是修饰符、返回值、抛出的异常不同,那么这是2个相同的方法。
重写(覆盖):子类继承父类以后,可以对父类中同名同参数的方法进行扩展并添加丰富的功能, 而子类中的方法与父类中继承的方法有完全相同的返回值类型、方法名、参数个数以及参数类型。
重写以后,当创建子类对象以后,通过子类对象调用子父类中的同名同参数的方法时,实际执行的是子类重写父类的方法。
回答角度:
3 构造器 - Constructor
3.1 构造器的作用
1.创建对象
2.初始化对象的信息
3.2 使用说明
4 代码块(初始化块)(重要性较属性、方法、构造器差一些)
4.1 代码块的作用:用来初始化类、对象的信息
4.2 分类:代码块要是使用修饰符,只能使用static
分类:静态代码块 vs 非静态代码块
4.3 使用说明
5 内部类(用的较少,重要性低)
5.1 内部类的定义
定义:Java中允许将一个类A声明在另一个类B中,则类A就是内部类,类B称为外部类
5.2 内部类的分类:
成员内部类(静态、非静态 ) vs 局部内部类(方法内、代码块内、构造器内)
5.3 成员内部类的理解
5.4 内部类的使用
5.4.1 成员内部类的使用
5.4.2 局部内部类的使用
② 主线二:面向对象三大特征
1 封装性
1.1 封装性解释 ※
将事物封装成一个类,减少耦合,隐藏细节。保留特定的接口与外界联系,当接口内部发生改变时,不会影响外部调用方。
1.2 封装性的体现
1.3 四种权限修饰符
2 继承性
2.1 继承性的解释 ※
从一个已知的类中派生出一个新的类,新类可以拥有已知类的行为和属性,并且可以通过覆盖/重写来增强已知类的能力。
2.2 继承性的说明
2.3 子类继承父类以后的特点
记忆:
注:
- 子类不可以继承父类中的构造方法,但可以调用父类中的构造方法;
- 如果构造函数被private修饰,则该类不可以被其他类继承。
- 继承关系中,方法的重写:重写与重载的对比 ※
3 多态性
3.1 多态性的解释※
- 对象的多态性:父类的引用指向子类的对象(或子类的对象赋给父类的引用)
- 把不同的子类对象都当作父类对象来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化。这样操作之后,父类的对象就可以根据当前赋值给它的子类对象的特性以不同的方式运作。
- 对象的引用型变量具有多态性,因为一个引用型变量可以指向不同形式的对象,即:子类的对象作为父类的对象来使用。
3.2 多态的使用前提
①有继承关系;②子类重写了父类的方法;
3.3 多态的使用:虚拟方法调用 ※
> 有了对象的多态性以后,我们在编译期,只能调用父类中声明的方法,但在运行期,我们实际执行的是子类重写父类的方法。
> 总结:编译,看左边;运行,看右边。
>注意:对象的多态性,只适用于方法,不适用于属性(编译和运行都看左边)
3.4 关于向上转型(多态)和向下转型(强制类型转换)※
向上转型:
子类对象转为父类,父类可以是接口。
公式:Father f = new Son(); Father是父类或接口,Son是子类。
向下转型:
父类对象转为子类。公式:Son s = (Son) f;
在向上转型的时候我们可以直接转,但是在向下转型的时候我们必须强制类型转换。并且,如案例中所述,该父类必须实际指向了一个子类对象才可强制类型向下转型,即其是以这种方式Father f = new Son()创建的父类对象。若以Father f = new Father()这种方式创建的父类对象,那么不可以转换向下转换为子类的Son对象,运行会报错,因为其本质还是一个Father对象。
③ 主线三:java常用关键字
3.1 this和super
this:
super:
3.2 权限修饰符
4种权限都可以用来修饰类的内部结构:属性、方法、构造器、内部类
修饰类的话,只能使用:缺省、public
权限从小到大顺序为:private < 缺省 < protected < public
具体的修饰范围:
3.3 static(静态的)
可以用来修饰的结构:属性、方法、代码块、内部类
static关键字的使用:
① static修饰属性:静态变量(或类变量)
补充:静态变量内存解析 - 具体图示见笔记
② static修饰方法:静态方法、类方法
static的注意点:
静态修饰的结构都是随着类的加载而加载,要比对象诞生的早;
应用:单例模式
3.4 final(最终的)
可以用来修饰的结构:类、变量、方法
使用方法:
static final 用来修饰属性:全局常量
3.5 abstract(抽象的)、interface(接口)
3.5.1 abstract
可以用来修饰的结构:类、方法
使用方法:
应用:模板方法的设计模式
3.5.2 interface
作用:用于定义接口(类似用class定义类)
使用方法:
应用:代理模式、工厂模式;
3.6 package、import
package
使用方法:
JDK中的主要包介绍:
import
使用方法:
关键字可以修饰的结构整理:
来源:http://www.1994july.club/?cat=9
以上是关于第 四 - 六 章 面向对象的主要内容,如果未能解决你的问题,请参考以下文章
20192312吴欣欣 实验四 《数据结构与面向对象程序设计》实验报告
20182311 2019-2020-1 《数据结构与面向对象程序设计》实验四报告
学号20182335 2019-2020-1 《数据结构与面向对象程序设计》实验四报告