面向对象最重要的两个概念:类和对象
类:是描述相同事物的共同特征的抽象。
对象:是具体存在的实例,可以被创建出来。(先有类,才能创建对象)
定义格式:
修饰符 class 类名{
}
要求:类名首字母要大写,Java可以定义多个类,但只有一个类能用public修饰,且被修 饰的类必须是代码的文件名称。
类只有5大成分:
(1)成员变量
(2)成员方法
(3)构造器
(4)代码块
(5)内部类
构造器初始化对象格式:
类名 对象名称 = new 构造器;
注意:一个类自动一个默认无参构造器,如果写了构造器就用写的,不写就默认是无参构 造器。
this关键字的作用:
this代表对当前对象的引用。
this关键字可以用在实例方法和构造器中。
(1)用在方法中,谁调用这个方法,this就代表谁。
(2)用在构造器中,代表构造器正在初始化的那个对象的引用。
面向对象的三大特征:封装,继承,多态。(Java语言的开发风格)
(1)封装
封装的作用:
1.可以提高安全性
2.可以实现代码的组件化
封装的规范:
1.尽量使成员变量都私有:private修饰,成员变量,构造器只能在本类中被直接 访问
2.提供getter+setter方法暴露成员变量的取值和赋值。
(2)继承(extends)
继承的作用:
1.可以提高代码的复用性,相同代码定义在父类中。(降低冗余(重复)度)。
2.子类继承父类,便可以直接调用父类代码。
子类功能更强大,是父类功能的扩展(extends)
继承的特点:
1.子类继承父类,就可以直接得到父类的属性(成员变量)和行为(成员方法)
2.继承可以调用父类中的内容,也可以在子类中在定义特有方法。
3.继承只能有一个直接父类,父类可以有多个子类。可以多层继承,一个类默认 继承Object类。
4.成员变量访问遵循就近原则:子类有找子类,子类没找父类,父类没有就报错
this代表当前对象的引用,访问当前子类对象的成员变量
super代表父类对象的引用,访问父类汇总的成员变量
5.成员方法访问遵循就近原则:子类对象优先使用子类已有的方法。
子类继承父类的方法重写
父类的方法不能满足需要,子类重写父类方法,覆盖父类方法。
加注解 @Override 可以检验是否重写成功。
方法重写的要求:
1>子类重写方法的名称和形参列表必须与父类被重写的方法一样。
2>子类重写方法的返回值类型申明要么与父类一样,要么比父类方法返回值类 型范围更小。
3>子类重写方法的修饰符权限应该与父类重写方法的修饰符权限相同或者更大
4>子类重写方法申明抛出的异常应该与父类被重写方法申明抛出的异常一样或 者范围更小。
super在方法重写中,访问的是父类方法。
静态方法和私有方法不可以被重写。
继承格式:
子类 extends 父类{
}
继承后-构造器的特点;
(1)子类的全部构造器默认先访问父类的无参数构造器,在执行子类自己的构
造器的时候先调用父类的构造器。(子类构造器第一行用默认的super())
(2)调用子类构造器初始化子类对象数据的时候,必须先调用父类构造器初始化 父类构造器对象。
super调用父类构造器:
(1)子类的全部构造器默认一定会调用父类的无参数构造器。
(2)super(.....):可以根据参数选择调用父类的某个构造器。以便调用父类构造 器初始化继承自父类的数据。
(3)多态
同一个类型的对象执行统一行为,在不同的状态下会表现出不同的行为特征。
多态的形式:
父类类型 对象名称 = new 子类构造器;
接口 对象名称 = new 实现类构造器;
多态多使用与对方法的调用:
方法的调用:编译看左边,运行看右边。(多态的形式 左 右)
变量的调用:编译看左边,运行也看左边。
多态的使用前提:
<1> 必须存在继承或者实现关系。
<2>必须存在父类类型的变量引用子类类型的对象。
<3>需要存在方法重写。
多态的优劣势:
优势
可扩展性和可维护性较高,便于实现类与类之间的解耦。
劣势
多态形式下,不能直接调用子类特有功能。
(上述笔记,作者自己总结。如果不正确的地方,欢迎指正。)