java—继承
###语法
class 继承类(子类) extends 被继承的类(父类){
}
被继承的叫做 父类 也称(超类) ,继承的类叫做 子类 (也叫做派生类)
使用场景
继承一般用于有特殊关系的两个类之间 比如 student is a person,worker is a person这种情况中,
就是一种包含关系。
####目的
使用继承 ,子类可以继承父类所有属性、方法、包括私有域 ,并且在父类功能基础上进行扩充(可重用性)
因此,子类最少也拥有和父类一样的功能
class A{
public void print1(){
System.out.println("1");
}
}
class B extends A{
public void print2(){
System.out.println("2");
}
}
public class Test{
public static void main(String[] args){
B b=new B();
b.print1();
b.print2();
}
}
在上述代码中,可以用对象 b直接调用 类A中的方法,说明B继承了A
(继承的限制)
1.在实例化子类对象之前,一定先实例化父类对象;
也就是说,在调用子类构造方法之前,一定先调用父类的构造方法
eg…
class Person{
public Person(){
System.out.println("1.调用父类构造方法");
}
}
class Student extends Person{
public Student(){
System.out.println("2.调用子类构造方法");
}
}
public class Day10{
public static void main(String[] agrs){
Student stu=new Student();
}
}
2.java中允许多层继承,但是不允许多继承
错误示例
//
class A{}
class B {}
class C extends A,B{}
public class Day10{
public static void main(String[] args){
}
}
上述代码会发生如上错误
//java不允许多继承(会发生如下错误)
class C extends A,B{}
^
正确用法
class A{}
class B extends A{}
class C extends B{}
public class Day10{
public static void main(String[] args){
}
}
显示继承和隐示继承
1.java在发生继承时 ,子类会继承父类的所有结构, 私有属性,构造方法,普通方法
2.所有父类的非私有域属于显示继承,子类可以直接引用父类方法(直接调用)
3.所有父类的私有域属于隐示继承,子类间接调用(通过setter和getter方法);
class Person{
private String name;//隐式继承
public String getName(){
return this.name;
}
public void setName(String name){
this.name=name;
}
}
class Student extends Person{
public void fun(){
System.out.println(super.getName());
}
}
public class Day10{
public static void main(String[] args){
Student stu =new Student();
stu.setName("郭佳玥");
stu.fun();
}
}