一、面向对象概念
1:面向对象:三大特征:封装,继承,多态
2:在java中任何处理的数据都可以看做对象
二、匿名对象
对象的名字:指向该对象的引用变量
匿名对象的作用
1:临时调用一个方法
2:类作为方法的参数
3:类作为方法的返回类型
三、继承关系
继承关系描述的是类与类之间的所属关系:谁是谁的一种,或者谁包含谁
继承的优点
1:继承让类与类之间产生关系
2:继承可以优化代码的设计结构
3:可以提高程序的扩展性
四、属性(成员变量) vs 局部变量:
相同点:
- 定义变量格式相同:数据类型 变量名 = 变量值先声明后使用变量都有其对应的作用域
不同点:
在类中声明的位置不同
属性:直接定义在类的一对{}中
局部变量:声明在方法内、方法形参、代码块内、构造器形参、构造器内部的变量
关于权限修饰符不同
属性:可以在声明属性时指明其权限,使用权限修饰符
常用的权限修饰符:private , public , 缺省 , protected ----> 封装性
局部变量:不可以使用权限修饰符。
默认初始化值:
属性:类的属性,根据其类型,都有默认初始化值。
- 整型(byte 、 short、 int、 long) 0浮点型(float、double) 0.0字符型(char) 0(或'u0000')布尔型(boolean) false引用数据类型(类,数组,接口) null
局部变量 : 没有默认初始化值
意味着我们在使用局部变量前一定要显性赋值。
特别的,形参在调用时,我们赋值即可
五、方法的重载
1.定义 : 在同一个类中,允许存在一个以上的同名方法,只要他们的参数个数或者参数类型不同即可。
两同一不同 : 用一个类 , 同一个方法名
参数列表不同:参数个数不同,参数类型不同
判断是否是重载:
与方法的权限修饰符、返回值类型、形参变量名、方法体都没有关系。
在通过对象调用方法时,如何确定某一个指定的方法:
方法名 -----> 参数列表
可变个数形参的形式
方法的形参的传递机制:值传递
递归方法 : 一个方法体内调用它本身
- 方法递归包含了一种隐式的循环,他会重复执行某一段代码,但这种重复执行不需要循环控制。递归一定要向已知方向递归,否则这种递归就成了无穷递归,类似于死循环。
六、面向对象特征之封装和隐藏
封装性的体现:
我们将类的属性×××私有化(private),同时,提供公共的(public)方法来获取(get×××) 和设置(set×××)
高内聚:类的内部数据操作细节自己完成,不允许外界干涉;
低耦合:仅对外暴露少量的方法用于使用
七、Java中关于继承性的规定:
一个类可以被多个子类继承
Java中类的单继承性,一个类只能有一个父类子父类是相对的概念子类直接继承的父类,称为直接父类。间接继承的父类称为:间接父类子类继承父类以后,就获取了直接父类以及所有间接父类中声明的属性和方法。
即为new的子类对象
- Java中类的单继承性,一个类只能有一个父类子父类是相对的概念子类直接继承的父类,称为直接父类。间接继承的父类称为:间接父类子类继承父类以后,就获取了直接父类以及所有间接父类中声明的属性和方法。
即为new的子类对象
八、面向对象特征之多态性
- 理解多态性:可以理解为一个事物的多种形态何为多态性:对象的多态性:父类的引用指向子类的对象(或子类的对象赋给父类的引用)多态的使用:虚拟方法调用
- 有了对象的多态性以后,我们在编译期,只能调用父类中声明的方法,但在运行期,我们实际执行的是子类重写父类的方法。子类中定义了与父类同名同参数的方法,再多态情况下,将此时父类的方法称为虚拟方法(也称虚方法),父类根据赋予他的不同子类对象,动态调用属于子类的该方法。这样的方法调用在编译期是无法确定的。多态的适用前提:
- 类的继承关系方法的重写
说明 Object类中定义的equals()和 == 的作用是相同的,比较两个对象的地址值是否相同,即两个引用是否指向同一个对象实体
像String、Date、File 、 包装类 等都重写了Object类中的equals()方法。重写以后,比较的不是两个引用的地址是否相同,而是比较两个对象的“实体内容”是否相同
通常情况下,我们自定义的类如果使用equals()的话,也通常是比较两个对象的“实体内容”是否相同,那么我们就需要对Object类中的equals()进行重写
重写原则:比较两个对象的实体内容(即:name 和 age)是否相同
九、类的成员之——代码块(或初始化块)
- 作用:用来初始化类、对象代码块如果有修饰的话,只能用static分类:静态代码块 vs 非静态代码块静态代码块
- 内部可以有输出语句随着类的加载而执行作用:初始化类的信息如果一个类中定义了多个静态代码块,则按照声明的先后顺序执行静态代码块的执行要优先于非静态代码块的执行静态代码块内只能调用静态的属性、静态的方法、不能调用非静态的结构
- 内部可以有输出语句随着对象的创建而执行,没造一个对象就执行一次没创建一个对象,就执行一次非静态代码块作用:可以在创建对象时,对对象的属性等进行初始化如果一个类中定义了多个非静态代码块,则按照声明的先后顺序执行非静态代码块内可以调用静态的属性、静态的方法、或非静态的属性、非静态的方法
十、抽象类与抽象方法
随着继承层次中一个个新子类的定义,类变得越来越具体,而父类则更一般,更通用。类的设计应该保证父类和子类能够共享特征。有时将一个父类设计的非常抽象,以至于他没有具体的实例,这样的类叫做抽象类。应用:用来模型化那些父类无法确定全部实现,而是由其子类提供具体实现的对象的类。



