• 继承


    继承是从已有的类里派生出新类。继承可以避免很多重复的代码。

    被继承的类叫做父类,派生的类叫做子类,子类和父类的关系是is a的关系,如父类是动物,子类是猫。那么猫继承了动物。猫是动物,但是动物不是猫。

    子类拥有父类非private的属性和方法。

    子类可以拥有自己的属性和方法,可以对父类的方法进行改写。

    继承只能单继承,如子类B只能继承一个父类A。但是可以多重继承。如子类C继承父类B,父类B又可以继承父类C。

    继承使用关键字extends

    如:

    //父类 ConstructorDemo

    public class ConstructorDemo {
    String name = “sandy”;
    int age = 11;
    }

    //子类ConstructorDemoExtend
    public class ConstructorDemoExtend extends  ConstructorDemo{
      
    ConstructorDemoExtend (){}
        }
    }

    子类只能调用而不能继承父类的构造函数。子类需要在自己的构造函数中调用父类的构造函数。
    初始化子类对象可以直接调用父类无参数的构造函数。
    public class Father {
    String name = "Father";
    int age = 50;
    Father(){
    System.out.println("i am father");
    }
    }

    public class SonClass extends Father{

    SonClass(){
    System.out.println("i am sonClass");
    }

    public static void main(String [] args){
    SonClass sClass = new SonClass();
    }
    }
    运行结果:

    i am father
    i am sonClass


    调用父类有参数的构造函数必须通过super,而且必须写在子类构造器中的第一行代码
    public class Father {
    String name ;
    int age;
    Father(){
    System.out.println("i am a constructor without parameter");
    }
    Father(String name){
    this.name = name;
    System.out.println("i am father");
    System.out.println("name: "+name);
    }
    }

    public class SonClass extends Father{


    SonClass(){
    super("Sandy");
    System.out.println("i am sonClass");
    }

    public static void main(String [] args){
    SonClass sClass = new SonClass();
    }
    }

    运行结果:
    System.out.println("name: "+name);

    i am father
    name: Sandy
    i am sonClass

    protected关键字

    子类可以访问父类里protected修饰的属性和方法,但是不能访问private修饰的属性和方法

    public class Father {
    String name ;

    protected void setName(String name){
    this.name = name;
    }

    protected String getName(){
    return name;
    }
    }
    public class SonClass extends Father{

    public static void main(String [] args){
    SonClass sClass = new SonClass();
    sClass.setName("wendy");
    String myName = sClass.getName();
    System.out.println(myName);
    }
    }
    运行结果:
    wendy







  • 相关阅读:
    用numpy实现CNN卷积神经网络
    用numpy实现BP神经网络
    扩展域并查集学习笔记
    My Blog问卷
    二叉搜索树(BST)学习笔记
    我的代码风格
    substr函数学习
    memset与fill的区别
    快读快写
    洛谷题解 CF777A 【Shell Game】
  • 原文地址:https://www.cnblogs.com/xiaohai2003ly/p/7081670.html
Copyright © 2020-2023  润新知