super和static

super

调用父类属性

class Person{
  String name="gcs";
}

class Student extends Person{
    String name="lh";
    
    public void test(String name){
        System.out.println(name);//传入的值
        System.out.println(this.name)//该类的属性值
        System.out.println(super.name)//父类的属性值
    }
}

调用父类的方法

class Person{
  public void print(){
      System.out.println("Person");
  }
}

class Student extends Person{
    public void print(){
      System.out.println("Student");
    }
    
    public void test(){        
        this.print();//打印出Person
        super.print();//打印出Student
    }
}

调用父类构造方法

class Person{
  public Person(){
      System.out.println("person");
  }
   
   public Person(String name){
       
   }
}

class Student extends Person{
    public Student{
      //会打印出Person和Student
      //因为在执行下面语句前默认执行了super()
      System.out.println("Student");
    }
    
    //如果父类只有有参构造方法,那么子类就必须也是有参构造
    //或者向下面一样向父类传入参数
    public Student(){
        //向父类传入参数
        super("name");
    }
}

static

静态属性和静态方法是和类一起加载的,当类加载完毕,静态方法加载完毕,而非静态方法是和对象实例一起加载的,只有实例化对象才可调用非静态方法

静态属性

class Person{
    static String name;
    String sex;
    
    public void main(String[] args){
        //静态属性和方法可以直接被调用
        name = "gcs";
        //非静态属性和方法必须要实例对象才能调用
        Person person = new Person();
        person.sex = "man";
    }
}

静态方法

class Person{
    
    public void test1(){
        System.out.println("Person1");
    }
    public static void test2(){
        System.out.println("Person1");
    }
}

class Student extends Person{
    //非静态方法可以被子类重写
    @Override
    public void test1(){
         System.out.println("Student1");
    }
   //静态方法不可以被子类重写
    public static void test2(){
         System.out.println("Student2");
    }
}

class Test{
    public void main(String[] args){
        //子类调用和父类同名静态方法时会执行父类静态方法
        Person p1 = new Person();
        Person p2 = new Student();
        p1.test1();//输出Person1
        p2.test1();//输出Student1
        p1.test2();//输出Person2
        p2.test2();//输出Person2
    }
}
上一篇:hdu1087 Super Jumping! DP


下一篇:Java初学笔记7