继承
什么是继承?
继承是一种联结类的层次模型,并且允许和鼓励类的重用, 它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生, 这个过程称为类继承。新类继承了原始类的特性, 新类称为原始类的派生类(子类),而 原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。
继承的“基本”作用
代码的复用
有了继承才有了 方法的覆盖和多态机制
java语言中的继承只支持单继承
一个类中不能同时继承很多类
只能继承一个类 c++中支持多继承
虽然java中只支持单继承 但是一个类可以间接继承其他类
java中子类继承父类都继承哪些数据?
私有的不支持继承
构造方法不支持继承
其他数据都可以继承
java中假设一个类没有显示的继承任何类 该类默认继承JavaSE库中提供的
java.lang.object类
继承就是 子类可以继承父类公有的属性和方法 继承关键字是 extends
子类不能继承父类的构造方法 也就是说 super() 不是继承 而是调用
继承优点: 实现类的重用 减少代码的冗余。
子类继承父类后 子类可以访问父类公有的属性 对象可以直接访问父类的属性
子类可以访问父类中的方法 对象可以直接访问父类的方法
子类可以重新父类中的方法
/**
* 父类 人类
*/
public class People {
//公有属性
public String name;
public String sex;
public int age;
public String id;
//公有方法
public void display(){
System.out.println("人可以思考");
}
}
/**
* 学生类 子类 继承 人类 能拥有人类中的属性
*
* 继承表示子类可以继承父类中公有的属性和方法
*/
public class Student extends People{//学生类继承人类
public String stuNo;//学号
public void show(){
System.out.println("我的姓名"+name+"\t学号"+stuNo);
}
//子类重写 父类中的方法
public void display(){
System.out.println("学生可以思考");
}
}
什么叫做重写
子类重写了父类中的方法 :方法名称相同 参数列表相同 返回值相同
什么叫做重载
仅仅在一个类中 方法名相同 参数列表不同 与返回值无关
什么叫做构造方法
在一个类中 方法名称与类名相同 无返回值的方法 叫做构造方法
this 当前对象
super 父类对象
this()当前对象的构造方法
super()父类对象的构造方法
super();必须出现在第一行
子类构造方法会默认调用父类的无参构造方法super()
可以指明调用父类的有参构造方法
public class Student extends People{
private String stuNo;
//子类构造方法 无参
public Student(){
System.out.println("学生类的无参构造方法被调用");
}
//知识点this() super() 各自的作用
public Student(String name){
//this(); //this()调用的是当前的构造方法
//super();//super() 调用的是父类的构造方法
}
//有参的构造方法
public Student(String name, int age, String id, String sex, String stuNo){
//使用super关键字
super(name,age,id,sex);//首先调用父类中的构造方法
this.stuNo = stuNo;
}
//知识点 :this super 各自的用法
public void show(){
System.out.println(this.stuNo);//当前对象
System.out.println(super.getName());
}
}
为什么类会首先调用父类的构造方法
因为在继承关系中必须先有父再有子
Object 是所有类的 超类 基类 父类