this,super关键字(二)

super关键字

1.super可用于访问父类中定义的属性
2.super可用于调用父类中定义的成员方法
3.super可用于在子类构造中调用父类的构造器
注意:

  1. 当子类与父类中有同名的属性时,可以通过”super.属性”显式的调用弗雷中声明的属性

  2. 当子类中重写父类的方法以后,在子类中若想再显式的调用父类的被重写的方法,就需要使用”super.方法”

  3. super修饰构造器,通过在子类中使用”super(形参列表)”来显式的调用父类中指定的构造器

  4. 在构造内部,”super(形参列表)”必须要声明在首行

  5. 在构造器内部,”this(形参列表)”或”super(形参列表)”只能出一个

  6. 当构造器中,不显式的调用”this(形参列表)”或”super(形参列表)”其中任何一个,默认调用的是父类中的空参构造器

建议:设计一个类时,尽量要提供一个空参的构造器

class Fu {  
  Fu() {  
         System.out.println("fu");  
         }  
           }  

public class Zi extends Fu {  
 Zi() {  
   super();//调用父类的构造方法,一定要放在方法的首个语句  
   System.out.println("Zi");  
           }  


public static void main(String argv[]) {  
  Checket c = new Checket();}  
}  
class Person {  

    public static void prt(String s) {  
        System.out.println(s);  
    }  
    Person() {  
        prt("A Person.");  
    }  
    Person(String name) {  
        prt("A person name is:" + name);  
    }  
}  

public class Chinese extends Person {  
    Chinese() {  
        super(); // 调用父类构造函数(1)  
        prt("A chinese.");// (4)  
    }  
    Chinese(String name) {  
        super(name);// 调用父类具有相同形参的构造函数(2)  
        prt("his name is:" + name);  
    }  
    Chinese(String name, int age) {  
        this(name);// 调用当前具有相同形参的构造函数(3)  
        prt("his age is:" + age);  
    }  
    public static void main(String[] args) {  
        Chinese cn = new Chinese();  
        cn = new Chinese("kevin");  
        cn = new Chinese("kevin", 22);  
    }  
}  

输出结果为:

A Person.
A chinese.
A person name is:kevin
his name is:kevin
A person name is:kevin
his name is:kevin
his age is:22

this关键字详见:http://blog.csdn.net/uponz/article/details/79101175
this,super区别详见:http://blog.csdn.net/uponz/article/details/79116429

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章