2020-10-03

    科技2022-07-11  83

    学习笔记

     

     

    一个.java文件中只能有一个public类。

     

     

    static: 用于修饰成员(成员变量和成员方法),当成员被static修饰后,该成员可被类名直接调用,类名.静态成员

    static修饰后的特点:随着类的加载而加载,优先于对象存在,被所有对象共享,可以被类名直接调用。 静态方法只能访问静态成

    员,其方法中不能定义super,this关键字,因为静态优先于对象存在,主函数是静态的。

    静态优点:把对象的共享数据单独存储,节省空间,可被类名直接调用。

    缺点:生命周期过长,访问出现局限(只能访问静态)。

    super关键字:我们可以通过super关键字来实现对父类成员的访问,用来引用当前对象的父类。

     

    一个类中默认会有一个空参数的构造函数,其权限和所属类的权限一致。静态代码块用来给类初始化,比构造代码块先执行

     

    子类是不继承父类的构造器(构造方法或者构造函数)的,它只是调用(隐式或显式)。如果父类的构造器带有参数,则必须在子类的构造器中显式地通过 super 关键字调用父类的构造器并配以适当的参数列表。

    如果父类构造器没有参数,则在子类的构造器中不需要使用 super 关键字调用父类构造器,系统会自动调用父类的无参构造器。

    class SuperClass {

    private int n;

    SuperClass(){

    System.out.println("SuperClass()");

    }

    SuperClass(int n) {

    System.out.println("SuperClass(int n)");

    this.n = n;

    }

    } // SubClass 类继承

    class SubClass extends SuperClass{

    private int n; SubClass(){ // 自动调用父类的无参数构造器

    System.out.println("SubClass");

    }

    public SubClass(int n){ super(300); // 调用父类中带有参数的构造器

    System.out.println("SubClass(int n):"+n); this.n = n;

    }

    }

     

    // SubClass2 类继承

    class SubClass2 extends SuperClass{

    private int n;

    SubClass2(){ s

    uper(300); // 调用父类中带有参数的构造器

    System.out.println("SubClass2");

    }

    public SubClass2(int n){

    // 自动调用父类的无参数构造器

    System.out.println("SubClass2(int n):"+n);

    this.n = n;

    }

    }

    public class TestSuperSub{

    public static void main (String args[]){

    System.out.println("------SubClass 类继承------");

    SubClass sc1 = new SubClass();

    SubClass sc2 = new SubClass(100);

    System.out.println("------SubClass2 类继承------");

    SubClass2 sc3 = new SubClass2();

    SubClass2 sc4 = new SubClass2(200);

    }

    }

    结果为:

    ------SubClass 类继承------ SuperClass() SubClass SuperClass(int n) SubClass(int n):100 ------SubClass2 类继承------ SuperClass(int n) SubClass2 SuperClass() SubClass2(int n):200

     

    Processed: 0.012, SQL: 8