继承: 关键字 extends
定义: 多个类有相同的成员变量和成员方法,需抽取多个类中相同部分的成员变量和成员方法到另外一个类(父类),让多个类去 extends 这个父类,此方法叫做继承;
*** 注: 子父类都是描述现实中的实际存在的事物,所以描述子父类;一定要按照现实名称来描述,做到见名知意;
特点: 1>Java语言只支持单体继承,一个子类只能继承一个父类;
2>Java语言支持多层继承;
*** 注:一个类如果没有继承任何类,那么他默认继承object类
成员变量:
特点: 1>.子类只能获取父类中非私有的(private)成员变量;
2>.子父类中成员变量名如果在子类没有,直接获取父类的该变量;
3>.子父类中成员变量名一样情况下,获取的是子类的成员变量;如果一定要获取父类的成成员变量,得使用 (super.变量名);
4>.在子类调用子类成员变量,可以使用this调用子类成员变量,如果当前方法中没有定义跟成员变量一样的局部变量,也可以不使用
总之: 在子父类与方法三种情况中,采用就近原则;
成员方法:
方法的重载 overload: 定义>> 在一个类中,有多个方法名相同,参数列表/参数类型/参数顺序不同;
*** 方法的重写 override: 定义>> 在子父类当中,当子类的方法声明与父类的方法声明相同,称方法的重写(覆盖);
特点:
1>.子类只能访问父类非私有方法;
2>.子类没有这个方法,调用父类;
子类中有这个方法,使用子类的;称作方法的重写;
3>.如果一定要在子类中调用父类的方法;在调用方法的时候加上super;
4
应用;在同一个行为中,当父类的行为无法满足子类的行为,此时需要对父类的方法进行重写;
注意事项: 1>.不能重写父类的私有方法
*** 2>.子类重写父类方法的时候,权限修饰符必须 >= 父类权限修饰符
3>.在子类中,使用this调用方法,如果子类中没有这个方法,默认调用父类的这个方法;
*** 注解:以@开头,写在类/方法上面
@override 方法的重写注解
@overload 方法的重载
构造方法:
*** 有子父类继承关系中,子类构造方法的第一行,如果没有调用父类的构造方法,则会
默认调用父类的无参构造;
*** 不管子类构造方法如何调用,第一条输出的肯定是父类构造方法;
this 和 super的区别:
this : 当前对象的引用;
调用当前类的方法或成员;
可在子类的构造方法第一行调用该类的其他构造方法;
调用当前类没有定义的变量时,默认调用父类该变量;
Super: 子类对父类的方法或变量的引用;
调用父类的构造方法
super调用构造语句只能放在子类构造方法的第一行中;如在子类构造对象中,没有使用super调用父类构造方法,则默认调用父类构造方法;
*** 注: 构造方法中第一行输出的语句只能是super/this,且他两不能同时存在;
父类有两个东西无法继承给子类
1>.父类私有化成员/方法
2>.父类构造方法无法继承;只能通过super访问;
继承的优点:
1>.提高代码的复用性;
2>.提高了可维护性;
缺点:
1>.类与类的耦合性变高;
2>开发原则:高内聚低耦合
3>.内聚:独立完成事件的能力
4>.耦合:类与类的关系;
匿名对象: 没有名字的对象;
右边就是一个匿名对象 new 类名();
当方法只用一次的时候可以使用匿名对象;
可当做参数进行传递,但无法再参数传递之前做任何事情;
匿名对象可以调用并赋值;但是没有意义;
缺点:不利于内存的使用,多次使用匿名对象会减小内存的使用空间;
final(最终): 修饰符;
被final修饰的类无法继承;
被final修饰的变量无法修改,但变量需要赋值;即:被final修饰的变量是一个常量;
称自定义常量;自定义常量必须初始化;
被final修饰的方法,无法重写;
常量: 自定义常量->被final修饰的常量; 字面常量
被final修饰的方法名或常量名都是大写
抽象类:
abstract 关键字 用于修饰方法和类
抽象方法: 不同类的方法是相似,但是局土内容又不太一样,所以我们只能抽取他的声明,没有具体的方法,
没有具体的方法体的方法就是抽象方法;
有抽象方法的类必须是抽象类;
*** 注:一个子类继承了一个抽象类,必须完善抽象类的抽象方法,如果不完成,子类就必须是个抽象类
特点:
abstract 只能修饰类与方法
抽象方法只能在抽象类里面
抽象类和抽象方法必须被abstract修饰;
*** 抽象类不能创建对象(不能实例化);
抽象类中可以有非抽象方法;
*** 抽象类可以被继承,1>.但子类必须去完善抽象类中的抽象方法,
2>.不然子类必须是抽象类;
成员特点:
成员变量:
可以有成员变量,
可以有常量;
成员方法:
可以有抽象方法;
也可以有非抽象方法;
构造方法:
有构造方法,因需要给抽象方法的成员变量初始化;
abstract 不能与final与private/static共存;
*** 抽象类思想可以规范子类;
writer:
charArrayWriter :写入硬盘内; |
|