其他分享
首页 > 其他分享> > day17_this关键字丶super关键字

day17_this关键字丶super关键字

作者:互联网

this关键字

含义

this使用位置

this关键字的三种用法

this访问本类成员变量: this.成员变量

代码示例

public class Student{
    String name = "张三";
    public void show(){
        String name = "李四";
        System.out.println("name = " + name);// 李四
        System.out.println("name = " + this.name);// 张三
    }
}

this访问本类成员方法: this.成员方法名( );

public class Student{
    public void show(){
        System.out.println("show方法...");
        this.eat();
    }
    public void eat(){
        System.out.println("eat方法...");
    }
}

this访问本类构造方法 :this( )或this(实参列表)

public class Student {

    public Student() {
        this("张三",18); //调用指定的有参数构造
        System.out.println("空参构造方法...");
    }

    public Student(String name) {
        this();//当使用this()调用另一个构造方法时,此代码必须是此构造方法的第一句有效代码。
        System.out.println("有参构造方法...");
    }
    public Student(String name, int age){
        System.out.println("有参构造方法..."+name+","+age);
    }
}

super关键字

含义:

super使用的前提

super关键字的三种用法

super访问父类的成员变量: super.父类成员变量名

class Fu{
    int num = 100;
}

class Zi extends Fu{
    int num = 10;

    public void show(){
        int num = 1;
        System.out.println("局部变量num:"+num);// 1
        System.out.println("Zi 类中的num:"+this.num);// 10
        //在子类中访问父类的成员变量,特别是当子类的成员变量与父类的成员变量重名时。
        System.out.println("Fu 类中的num:"+super.num);// 100

      }
}

super访问父类的成员方法: super.成员方法名( );

class Fu{
    public void method1(){
        System.out.println("Fu method1...");
    }
}

class Zi extends Fu{
    public void show(){
        // 访问父类的method1方法
        super.method1();
    }

    @Override
    public void method1(){
        //在子类中调用父类的成员方法,特别是当子类重写了父类的成员方法时
        super.method1();// 调用父类的method1方法
        System.out.println("Zi method1...");
    }
}

super访问父类的构造方法:super()或super(实参列表)

class Fu{
    public Fu(){
        System.out.println("Fu 类的空参构造方法..");
    }
    public Fu(String name, int age) {
        System.out.println("Fu 类的有参构造方法..");
    }
}
public class Zi extends Fu{
    public Zi(){
        //在子类的构造器首行,用于表示调用父类的哪个实例初始化方法
        super();// 调用父类的空参构造方法
        System.out.println("Zi 类的空参构造方法..");
    }
    public Zi(String name,int age){
        super(name,age);// 调用父类的有参构造方法
         System.out.println("Zi 类的有参构造方法..");
    }
}

总结:

就近原则和追根溯源原则

找变量

没有super和this

存在this

存在super 

注意:super和this都不能出现在静态方法和静态代码块中,因为super和this都是存在与对象中的

找方法

没有super和this

存在this

存在super 

找构造器

标签:构造方法,子类,成员,关键字,day17,父类,super,public
来源: https://www.cnblogs.com/wurengen/p/16436785.html