继承:
两个类之间具有相同特征,可以通过继承来实现
是面向对象的三大特征之一,使子类具有父类属性和方法,还可以在子类中重新定义和追加方法。
extends来继承
继承的好处和弊端
好处:提高了代码的复用性,维护性
弊端:削弱了子类的独立性
什么时候使用继承? 假设有两个类A,B如果满足A是B的一种,或者B是A的一种,可使用继承
继承中变量的访问特点
1、现在子类局部范围内寻找;2、在子类变量中寻找;3、在父类中寻找,4、如没有,即报错,不考虑父类的父类
super关键字
与this关键字用法类似;this本类对象的引用;super父类对象标识
继承的特点
子类所有的构造方法都会默认访问父类的无参构造方法
原因:子类会继承父类的数据,可能会使用父类的数据,在子类初始化之前,先要初始化父类,
子类构造方法的默认语句第一句是super()
方法重写
子类中出现了和父类中一模一样的方法声明
当子类出现父类的功能,而功能主体子类有自己特有的功能时,可以重写父类的方法;既沿袭了父类的功能,又定义了子类特有的内容
例:
public class Phone {
public static void call(String name){
System.out.println("给"+name+"打电话");
}
}
public class NewPhone extends Phone{
public static void call(String name){
System.out.println("开启视频功能");
super.call(name);
}
}
public class PhoneDome {
public static void main(String[] args){
Phone p =new Phone();
p.call("李");
System.out.println("------");
NewPhone np=new NewPhone();
np.call("胡");
}
}
方法重写的注意事项
私有方法不能被重写,私有类的成员是不能被继承的
子类的访问权限不能更低(public >默认>私有)
Java继承的注意事项
只支持单继承,不支持多继承
支持多层继承
修饰符(包,导包,修饰符)
包:其实就是文件夹
作用:对类进行分类管理
包的定义格式:
package 包名;(多级包用. 分开)
例如:school.student
导包:
import 关键字
修饰符:
final 是最终的意思,可是修饰成员方法,成员变量,类
方法被修饰,不可以重写;类被修饰,不可以被继承
final修饰基本类型,数据值不能改变
final修饰引用类型,是指引用类型的地址值不能改变;内容可以改变
static
被所有对象共享的数据成员
可以通过类名调用,也可以通过处对象名调用
访问特点:
非静态的成员方法:访问静态和非静态的成员变量和成员方法
静态的成员方法:访问静态的成员变量和成员方法
静态的成员方法只能访问静态成员