前言
学习了继承的概念及作用、方法重写、this的使用、super的使用
一.继承的概念及作用
1.什么是继承
子类继承父类
2.继承的作用
子类扩展父类的属性以及方法,就是为了实现代码的复用(继承在Java中只能单继承,不能多继承)
1、实现代码复用、减少代码冗余 2、方便维护 3、多态的前提
3.继承的注意
- 子类可以继承父类中有权限访问的属性以及方法
-
所有的引用类型都默认继承了超类Object
-
Java中只有单继承,没有多继承,但是有继承链 Doctor --> Person --> Object
-
extends 扩展 -- 继承
-
子类继承父类的所有东西?应该是子类有权限继承的属性和方法 所以,一般来说父类中的属性和方法设置为public
二.方法重写
1.什么是方法重写
子类重写父类的方法(子类覆盖父类的方法)
2.方法重写的目的是什么
凸显出子类的行为特征
3.方法重写的用法(两同,一大,两小)
-
方法名相同、方法参数列表相同
-
和方法修饰符、返回值类型有关
-
子类重写父类的方法,子类方法的权限修饰符比父类的大或者相等
-
子类重写父类的方法,子类的返回值类型比父类的小或者相等【引用类型】【基本数据类型要一致】
-
子类重写父类的方法,子类的抛出的异常类型要比父类的小或者相等
-
- 当子类中有和父类一样的私有化方法,那么子类的私有化方法是一个普通方法,并不是重写了父类的方法
4.方法重写和方法重载的区别
方法重写:子类重写父类方法,凸显出子类的行为特征
方法重载:在同一个类中,同一种行为的不同的体现
1.方法重写存在于继承链中,方法重载存在于同一个类中
2.方法重写是和修饰符以及返回值是有关系的,而方法重载是没有关系的
3.方法重写方法名和参数列表是一样的,但是方法重载是方法名一致,参数列表不一致
继承链
Ostrich-->Bird-->Animal-->Object
Ostrich-->Animal
三.this的使用
1.什么是this
this表示的是调用当前方法的实例对象的引用
2.this的用法
1.用于区分同名的成员变量和局部变量
2. 在本类的非静态方法中调用非静态的属性以及方法可以省略对象,原因是省略this.
3.可以使用this调用本类另一个构造器,但是要注意构造器的调用必须要在构造器的第一行
3.this注意事项
注意:this不能在static修饰的代码块中使用(原因:this是一个对象的引用,是真实存在的;在static的代码块中this不能指向明确的真实对象)
四.super的使用
前言
在java中创建对象时,首先会先创建父类的对象,再创建本类的对象
Person p = new Person();
1.什么是super
super表示为当前类的父类的对象
2.super的用法
- super可以调用父类的构造器,必须要在构造器的第一行
-
super可以调用父类的属性和方法
-
父类的成员变量存放在父类的对象,而不是在子类的对象中
-
而子类中定义的成员变量,还是存放在子类的对象中【成员变量由始至终都是只有一个】
-
super和this一样,都表示为一个对象引用,所以不能在静态代码块中使用
-
在构造器中super();写和不写都一样,因为系统会默认调用父类的无参构造器创建父类的对象
五、final的使用
1.什么是final
使用final修饰类,则表示为当前类是一个最终类,不能被继承
2.final的用法
- 用于修饰类、变量、常量、方法
-
final修饰类 为最终类 ,则不能给子类继承
-
final修饰方法,则该方法不能被重写
-
final修饰变量,要先进行赋值(初始化),赋值(初始化)后该变量的值不能被修改
-
类型为基本数据类型,赋值(初始化)后该变量的值不能被修改
-
类型为引用类型,则不能赋值一个新的对象,但是可以修改对象中成员变量的数值
-
- final修饰局部变量,不要求先进行赋值(初始化),但是赋值(初始化)后该变量的值不能被修改
总结
学习了继承的概念及作用、方法重写、this、super、final的使用