zoukankan      html  css  js  c++  java
  • java中的this和super关键字

     1 package cn. tju. acculation. keywords;
     2  
     3  
     4 public class ThisAndSuper {
     5  
     6       public static void main( String[] args ) {
     7             Student s1 = new Student( "zhangsan" , 14) ;
     8            s1 .print ();
     9            
    10             Student s2 = new Student( "lisi" , 12, "23" );
    11            s2 .print ();
    12       }
    13 }
    14  
    15 /*this关键字
    16 1)在类的内部代表该类的对象。
    17 2)this的第二种用法,是用在构造函数里的。当在构造器里要调用该类的其他构造器时,就用this。this必须放在第一行
    18  
    19 super关键字
    20 1)显式的调用父类的方法,当从一个类继承时,子类和父类都有一个同名方法,也就是子类覆盖了父类的方法,可是又想调用父类的方法,那么就要用super。
    21 2)用在构造器,和this的用法一样,super也可以用在构造器,this是调用自己的其他构造器,super是调用父类的构造器
    22  
    23 super和this用在构造器的话,前者表示调用父类的构造器,后者表示调用本类的其他构造器,他们两个都必须是写在构造器里的第一行。*/
    24  
    25  
    26 class Person {
    27    private String name ;
    28    private int age ;
    29   
    30    public Person () {
    31        this ("" , 0) ;//使用this调用本类的其他构造器,必须置于此构造器的第一行
    32        System. out. println( "Person类空参构造器-------" );
    33    }
    34  
    35    public Person (String n , int a) {
    36        name = n;
    37        age = a;
    38        System. out. println( "Person类·有参·构造器-------" );
    39    }
    40  
    41       public String getName () {
    42             return name;
    43       }
    44      
    45       public void setName (String name ) {
    46             this. name = name ;
    47       }
    48      
    49       public int getAge () {
    50             return age;
    51       }
    52      
    53       public void setAge ( int age) {
    54             this. age = age ;
    55       }
    56 }
    57  
    58 class Student extends Person {
    59    private String id ;//学号
    60  
    61    public Student (String name , int age) {
    62        super (name , age) ;//必须写在第一行,子类无法直接访问父类的私有属性,所以通过调用父类的构造器类初始化属性
    63        System. out. println( "Student类含两个参数的构造器-------" );
    64    }
    65  
    66    public Student (String name , int age, String id ) {
    67        this (name , age) ;//因为本类已经有个构造器初始化name和age了,所以交给他来做就行了,也必须写在第一行
    68        this. id = id ;
    69        System. out. println( "Student类含三个参数的构造器-------" );
    70    }
    71   
    72    public void print () {
    73         System. out. println( "Student 的名字:" +getName ()+ ";年龄:" +getAge ()+ ";学号是:" +id );
    74    }
    75 }
    76 /*
    77 总结
    78 1、super(参数):调用基类中的某一个构造函数(应该为构造函数中的第一条语句)
    79  
    80 2、this(参数):调用本类中另一种形成的构造函数(应该为构造函数中的第一条语句)
    81  
    82 3、super: 它引用当前对象的直接父类中的成员(用来访问直接父类中被隐藏的父类中成员数据或函数,基类与派生类中有相同成员定义时) 
    83  
    84 如:super.变量名
    85  
    86 super.成员函数据名(实参)
    87  
    88 4、this:它代表当前对象名(在程序中易产生二义性之处,应使用this来指明当前对象;如果函数的形参与类中的成员数据同名,这时需用this来指明成员变量名)
    89  
    90 */
  • 相关阅读:
    Baskets of Gold Coins_暴力
    Inversion_树状数组***
    萌新的旅行-
    KI的斐波那契_DFS
    牛吃草_二分法
    See you~_树状数组
    Bellovin_树状数组
    Bubble Sort_树状数组
    [Python] numpy.ndarray.shape
    [Python] numpy.sum
  • 原文地址:https://www.cnblogs.com/QuentinYo/p/3302135.html
Copyright © 2011-2022 走看看