一、继承
1.继承时面向对象的一个重要特征
他是从已知类中产生新的类的方式,新的类拥有已知类的所有属性和功能,并可以有自已新增的功能和属性
2.可以提高程序的复用性
1 实现方式
1.关键字extends
2.Java只支持单继承,一个子类只能有一个父类,但一个父类可以拥有多个子类
3.继承可传递性,父类从爷爷类所继承的方法,子类同样会继承
4.被private修饰的资源,子类同样会继承,不能调用是由于被访问限制符pivate限制了。
5.子类可以有自己特有的功能
6.继承是种is-a的关系,强耦合
2 继承中的变量使用
1.父类的成员变量和子类中的变量不重名是时直接使用
2.子类会继承父类的所有成员变量(包括static)
3.父类的成员变量和子类中的变量重名是,用super.变量名指定
3.静态变量在类被导入是就执行了
3 继承中的构造方法
1.子类对象在被构造时,会自动触发父类默认的无参构造
原因是子类的构造方法中存在一个super();--作用是调用父类构造方法
2.当父类中没有无参构造时,需要手动添加super(参数);在构造方法中的第一行,不然会报错
3.构造方法不会被子类继承,(子类唯一没有继承的资源),原因是语法上要求构造方法的名字要与类名一致;
4.this调用本类构造方法和super调用父类构造方法不允许出现在同一构造方法中,他们都要求在第一行
4 继承中的普通方法
1.子类会继承父类所有的普通方法,
2.子类可以有自已独特的方法
3.子类可以重写父类方法
二、方法的重载和重写
1 重写
概念:子类在继承父类方式时,可以根据要求重写父类中的普通方法,即是子类重写父类方法。
重写方法遵守2同,2小,一大原则
- 2同:同方法名,同参数列表
- 2小:返回类型的类是被重写方法的返回值的本类及子孙类,抛出异常类型是被重写方法抛出异常的本类及子孙类
- 1大:被访问范围大于等于父类
1 重载(overloading)
1.1定义
在一个类的内部,存在多个方法,拥有相同的方法名,不同的参数列表的现象称之为重载。
1.2作用
提高程序调用的灵活性,不论输入的参数类型如何变化,都会有合适的方法被调用。
1.3注意:
1.参数列表不同指包括参数类型的数量,以及参数类型的位置不同。
2.参数列表不同不包括参数名的不同
3.返回值的类型的差异区别不同方法(及不会发生重载)
1.4 重载与重写
1.重载(overloading):发生在本类中,是方法名相同而参数不同的现象
2.重写(overriding):发生在继承关系中,子类不满足于父类的功能,重新编辑方法功能的现象,方法名和参数列表相同,返回值遵守小,访问限制遵循一大的现象
3.重载的意义:提高了程序的灵活性
4.重写的意义:在不修改源码的情况写进行功能的修改与拓展(类似OCP原则:面向修改关闭,面向拓展开放)
三、this与super
1.this是本类的引用(地址变量),相当于 Cat this = new Cat();
super是父类对象的引用(地址变量),相当于Father super = new Father();
2.本类的成员变量和局部变量同名时,this.变量名表示成员变量
父类的成员变量与子类变量同名时,super.变量名表示父类成员变量
3.this可以调用本类的构造方法
super可以调用父类的构造方法
4.注意:super使用必须是发生继承
5.注意:this和super调用构造方法时,都要放在构造方法的第一行。
6.注意:如果父类发生没有无参构造时,必须手动添加super(参数)构造方法
7.注意:子类发生方法重写时,可以通过super.方法名调用父类方法。
四、final关键字
1.final关键字修饰的类不可被继承
2.final关键字修饰的方法不可被重写
3.final关键字修饰量是常量,不能被赋值,所以一定要复制
五、static关键字
1部分特定
1.被static修饰的资源是静态资源(又称类资源)
2.随着类的加载而加载,并且只加载一次
3.加载的顺序是按照书写的顺序加在的
4.静态资源可以直接通过类名调用
5.所有对象公用相同的静态资源
6.static只能修饰成员变量及方法不能修饰类、方法内的局部变量和代码块
2静态资源与普通方法
静态方法只能调用静态资源、
3静态代码块
1.位置:方法外类内
2.执行时间:(创建对象时就会触动静态代码)静态代码块是静态资源,随着类的加载而加载,优先于对象加载,并且只加载一次
3.作用:用于加载那些需要第一时间加载,并且只需要加载一次 的资源,常用来初始化
4在新建对象是类的加载顺序
- 父类静态代码块
- 子类静态代码块
- 父类构造代码块
- 父类构造方法
- 子类构造代码块
- 子类构造方法
- 普通方法
- 局部代码块