this关键字与super关键字

一 this关键字

    this关键字在程序中三种常见的用法:

    (1)通过this关键字可以明确地去访问一个类的成员变量,解决与局部变量名称冲突问题。

     例:

     

class Person{
     int age;
     public Person(int age){
       this.age=age;
     }
    public int getAge (){
    return this.age;
    }
  }
    在上面的代码中,构造方法的参数被定义为age,它是一个局部变量,在类中还定义了一个成员变量,名称也是age,在构造方法中如果使用“age”,则是访问局部变量,但如果使用“this.age”则是访问成员变量。

(2)通过this关键字调用成员方法

  

(3)构造方法是在实例化对象时被java虚拟机自动调用的,在程序中不能像调用其它方法一样去调用构造方法,但可以在一个构造方法中使用“this([参数1,参数2...])”的形式调用其它的构造方法

 class Person{
     public Person(){
        System.out.printIn(无参的构造方法被调用了);
    }
public Person(String name){
     this();
     System.out.printIn(有参的构造方法被调用了);
    }
 }
public class Example{
      public static viod main (String[] args){
      Person p=new Person("itcast");
    }
}
在使用this调用类的构造时应注意:

1.只能在构造方法中使用this调用其它的构造方法,不能在成员方法中使用。

2.在构造方法中,使用this调用构造方法的语句必须位于第一行,且只能出现一次。

3.不能再一个类的两个构造方法中使用this互相调用。



二 Super关键字

   当子类重写父类的方法后,子类对象将无法访问父类被重写的方法,为了解决这个问题,在java中专门提供一个super关键字用于访问父类的成员。

   super的用法:

(1)使用super调用父类的成员变量和成员方法。格式如下:

   super.成员变量

 super.成员方法([参数1,参数2....])


  (2) 使用super调用父类的构造方法。

   例:

class Animal{
     public Animal(String name){
     System.out.printIn("我是一只"+name);
        }
}
class Dog extends Animal{
     public Dog(){
     super("狼狗");
       }
}
public class Example{
     public static viod main(String[ ] args ){
     Dog dog=new Dog();
      }
}
  注意:通过super调用父类的构造方法的代码必须位于子类构造方法的第一行,并且只能出现一次。

              在子类的构造方法中一定会调用父类的某个构造方法。这时可以在子类的构造方法中通过super指定调用父类的哪个构造方法,如果没有指定,在实例化子类对象时,会自动调用父类无参的构造方法。















你可能感兴趣的:(java基础笔记)