11)面向对象(2)
Java面向对象(2)
封装
-
该露的露,该藏的藏
我们程序设计要追求高内聚,低耦合。
高内聚:就是类内部的数据操作细节自己完成,不允许外部干涉。
低耦合:尽量暴露少量的方法给外部使用。
-
属性私有:private
-
get/set:获取或者更改private属性。
public class Student{ //属性私有 private int age; //get public int getAge() { return this.age; } //set public int setAge(int age) { this.age = age; } }
封装的意义:
- 提高程序的安全性,保护数据
- 隐藏代码的实现细节
- 统一接口
- 系统的可维护增加了
继承
继承的本质事对某一批类的抽象,从而实现对现实世界的更好的建模。
extends:拓展
-
Java中只有单继承,没有多继承。
-
继承关系的两个类,一个为子类(派生类),一个为父类(基类)。子类继承父类,使用关键字extends来表示。
-
私有的是无法继承的。
-
Java中,所有的类,都默认直接或者间接继承object类。
public class Person {
public void say() {
System.out.println("说话");
}
}
public class Student extends person{
}
public class Demo1 {
public static void main() {
Student student = new Student();
//可以使用父类方法。
student.say();
}
}
idea:ctrl + H 派生树。
修饰符中的范围大小:
public protected default private
super类详解
本方法的范围内 :变量名/方法名
本类的范围内:this.变量名/方法名
父类的范围内:super.变量名/方法名
- new一个子类的对象,首先会调用父类构造器。父类构造器的调用必须在子类构造器的第一行,默认为隐藏。
super注意点:
- super调用父类的构造方法,必须在构造放法的第一个。
- super必须只能出现在子类的方法或者构造方法中。
- super和this不能同时调用构造放方法。
方法的重写
静态的方法和非静态的方法差别很大。
子类类型 new 子类
父类类型 new 子类
其中第二个方式会发生两种情况:
当方法为静态方法时,父类的引用指向子类,调用只和类型有关(尽量不用)
当方法为非静态时,父类的引用指向子类,子类重写了父类的方法
重写
需要有继承关系,子类重写父类的方法
- 方法名必须相同
- 参数列表必须相同
- 修饰符:范围可以扩大
- 抛出异常:范围,可以被缩小,但是不能扩大。
多态
- 可以实现动态编译类型
多态注意事项:
- 多态是方法的多态,属性没有多态
- 父类和子类,有联系 类型转换异常 ClassCastException
- 存在条件:继承关系,方法需要重写,父类的引用指向子类对象
instanceof(类型转换)引用类型 判断类型
System.out.println(X instanceof Y); 编译能否通过取决于 X和Y是否有父子关系。
tips:
- 父类引用指向子类的对象。
- 把子类转化为父类,向上转型。(会丢失子类的一些方法)
- 把父类转换为子类,向下转型,强制转换。
- 方便方法的调用,减少重复代码。

浙公网安备 33010602011771号