Java面向对象之继承
1. 概念:
多个类中存在共同的属性和行为时,将这些内容抽取到一个单独的类里面,那么这些类就无须定义这些属性和行为,只需要继承那个类即可。这个类就称为父类或者基类、超类,继承的类称为派生类或者子类。
2. 特点:
子类可以直接访问父类的非私有性的行为和属性。
Java支持单继承,不支持多继承,但是支持多层继承。
子类在继承时也可以扩展自己的属性和方法。
3. 继承的语法格式:
【修饰符】class 子类名 extends 父类名{类体部分}
优点:继承提高了代码的复用性,让类与类之间产生了联系,提供了多态的前提。
注意:如果一个类没有显式的继承某一个类,那么它有一个默认的父类是java.lang.Object类Java继承了父类非私有的成员变量和成员方法,但是请注意:子类是无法继承父类的构造方法的。
二、方法重写
1.概念:
当子类出现和父类一样的方法时,会出现覆盖父类方法的操作,称之为重写或者复写。
父类中的私有方法不可以被覆盖。
在子类覆盖父类方法时候,继续使用被覆盖的父类方法的时候通过super函数获取。
2.覆盖注意事项
覆盖时子类的权限一定要大于父类的权限,静态只能能覆盖静态
3.方法重写的要求:
子类重写方法的访问修饰符范围必须大于或者等于父类的方法修饰符,子类重写父类的方法、方法名、参数类型、个数、返回值、都相同。
4.Final关键字:
final可以修饰类,方法,变量。
final修饰的类不可以被继承。
final修饰的方法不可以被覆盖。
final修饰的变量是一个常量。只能被赋值一次。
内部类只能访问被final修饰的局部变量。
4. Super关键字:
4.1.Super与this的区别:
this代表本类对象的引用
super代表父类的内存空间的标识。
当子父类出现同名成员时,可以用super进行区分
子类要调用父类构造函数时,可以使用super语句。
4.2 super的使用方式
super.属性名 用于在子类中调用父类被隐藏的同名实例变量
super([参数列表]) 用于在子类的构造方法中调用父类的构造方法
**
5. 子类实例化的过程:
**
子类中所有的构造函数默认都会访问父类中空参数的构造函数,因为每一个构造函数的第一行都有一条默认的语句super();子类会具备父类中的数据,所以要先明确父类是如何对这些数据初始化的。当父类中没有空参数的构造函数时,子类的构造函数必须通过this或者super语句指定要访问的构造函数。
注意:每一个子类的构造方法在没有显示调用super()系统都会提供一个默认的super()
super() 书写在第一行。可以在子类构造方法中显示调用super(),完成对特定父类构造方法的调用
|–|--|
| | |