java—继承

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();
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_42139044/article/details/84900840