A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zlp19940327 中级黑马   /  2015-4-16 00:58  /  249 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. /*
  2.         super和this的区别:

  3.         1.this始终是指向本类的成员:
  4.                 1).访问本类的成员;
  5.                 class A{
  6.                         int num = 10;
  7.                         void f1(){
  8.                                 System.out.println("num = " + this.num);
  9.                                 this.f2();//调用本类的f2()方法
  10.                         }
  11.                         void f2(){
  12.                         }
  13.                 }
  14.                 2).在本类的构造方法中,调用本类其它的构造方法;
  15.                         class A{
  16.                                 A(){
  17.                                         System.out.println("a1");
  18.                                        
  19.                                 }
  20.                                 A(int b){
  21.                                         this();//调用此类无参的构造方法;它必须是这个构造方法的第一条有效语句;
  22.                                         System.out.println("a2");
  23.                                 }
  24.                         }
  25.                         main(){
  26.                                 A a = new A(2);

  27.                         }
  28.         2.super始终是指向父类的空间:
  29.                 1.通过super可以访问父类的成员:
  30. (重点)        2.可以调用父类的构造方法;
  31.                 3.在子类中的构造方法,默认情况下会在第一行自动添加一句:super();//调用父类的无参的构造方法;
  32.                 4.注意:
  33.                         如果父类没有无参的构造方法,那么子类的构造方法中,就必须使用super()去显示的去调用父类的某个
  34.                         带参的构造方法;
  35.                 5.在子类的构造方法中调用父类的构造方法使用super().这里也要求super()必须是这个构造方法的第一句话;
  36.                 6.在子类的构造方法中,不能即使用this()又使用super();因为都需要在第一句话;
  37.           

  38. 小结:
  39. 1.this可以访问本类成员属性和成员方法;调用本类其它构造方法
  40. 2.super可以访问父类的成员属性和成员方法;调用父类的构造方法;
  41. 3.有一个时候,需要我们在子类中必须显示的使用super()去调用父类的构造方法:
  42.   当父类没有无参构造方法时:
  43.         class A{
  44.                 A(int a){
  45.                 }
  46.         }
  47.         class B extends A{
  48.                 //不论子类中有多少个构造方法,每个构造方法内都要显示的去super(),调用父类带参构造方法;
  49.                 B(int n){
  50.                         super(n);
  51.                 }
  52.         }
  53. */
  54. class A{
  55.         int num = 10;
  56.        
  57.         A(int b){
  58.         //        this();//调用此类无参的构造方法;它必须是这个构造方法的第一条有效语句;
  59.                 System.out.println("a2");
  60.         }
  61.         void fun(){
  62.                 System.out.println("父类的fun()方法");
  63.         }
  64. }
  65. class B extends A
  66. {
  67.        
  68.         B(int n){
  69.                 super(n);//调用了父类的带一个int参数的构造方法;
  70. //                this("aaa");
  71.         }
  72.         B(String a ){
  73.         }

  74.         int num = 20;
  75.         void show(){
  76.                 System.out.println("num = " + super.num);//父类的num
  77.                 super.fun();//父类的fun()方法
  78.         }
  79. }
  80. class Demo
  81. {
  82.         public static void main(String[] args)
  83.         {
  84.         //        new B().show();
  85.                 new B(20);
  86.                
  87.         }
  88. }
复制代码




1 个回复

倒序浏览
加油加油
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马