继承、super

一、继承:

总结:子类可以覆盖父类的方法。
            子类可以继承父类除private以为的所有的成员。
            构造方法不能被继承。

            单继承性:Java 允许一个类仅能继承一个其它类,即一个类只能有一个父类,这个限制被称做单继承性。

            继承可以在同一个包中进行,也可以不在同一个包中进行,通过它的访问修饰符来控制,但是子类的访问控制符必须和父类相同.

注意:构造方法不能被继承,掌握这一点很重要。 一个类能得到构造方法,只有两个办法:编写构造方法,或者根本没有构造方法,类有一个默认的构造方法。

二、super

      1、super用在子类中,通过点号(.)来获取父类的成员变量和方法。super 也可以用在子类的子类中,Java 能自动向上层类追溯。

      2、通过 super 调用父类的隐藏变量,必须要在父类中声明 getter 方法,因为声明为 private(私有的,只能够在本类中被调用) 的数据成员对子类是不可见的。

      3、注意:在构造方法中调用另一个构造方法,调用动作必须置于最起始的位置。
                        不能在构造方法以外的任何方法内调用构造方法。
                        在一个构造方法内只能调用一个构造方法。

                       无论是 super() 还是 this(),都必须放在构造方法的第一行。

      4、如果编写一个构造方法,既没有调用 super() 也没有调用 this(),编译器会自动插入一个调用到父类构造方法中,而且不带参数。
      5、通过 super 调用父类的隐藏变量,必须要在父类中声明 getter 方法,因为声明为 private 的数据成员对子类是不可见的。

以游戏账号的倒卖(同一个包中为例):

  

package wanmei;

public class Tuoxie {   //父类
  private String name;  //游戏账号倒卖后,名字肯定不恩能够重复,所以是私有的.
  int rank;                        //等级
  char sex;                      //性别
  int age;                         //存在的年龄
  String faction;             //帮派
  String friend;               //认识的朋友
  
  public Tuoxie(){          //不传参的构造方法。
   name="穿着拖鞋去上学";        //给成员变量进行相应的实例化。
   rank=105;
   sex='男';
   age=6;
   faction="★战☆魂★";
   friend="很多";
        

   System.out.println("game name :"+name+"\t"+"现在的等级 :"+rank             //输出角色的基本信息
     +"\t"+"sex :"+sex+"\t"+"玩了 :"+age+"年"+"\t"
     +"所在的帮派 :"+faction+"\t"+"认识的朋友 :"+friend);
  }
  
  public Tuoxie(String name,int rank){                                           //传参的构造方法。
     this.name=name;                                                                        //通过子类传入变量的信息。
     this.rank=rank;                                                                               //3个参数看着这太多,所以在里面直接赋值一个算了,只传了两个进来。
     sex='男';
  System.out.println("游戏名字 :"+this.name+"\t"+"当前等级 :"
       +this.rank+"\t"+"职业的性别 :"+sex);  
  }


  public String getName() {                                                            //要想取得私有信息的参数,就建一个方法,(get+name(私有变量名))
   return name;                                                                                 //然后调用这个方法,就可以获得私有变量的信息
  }
}

 

 

package wanmei;

public class Man extends Tuoxie{                                       //子类,想要继承父类的格式:extend+Tuoxie(类名,你想要继承的类);
   String name;                                                                         //买了过后赋予新的名字
   String change;                                                                      //改变了哪些(精炼等级),牛人自己点.
  // char sex;                                                                              //继承了性别,如果用道具改变了性别,就不用注视掉。PS:不会卖人妖吧....
   String faction;                                                                       //新加入的帮派;()
   String hobby;                                                                        //个人爱好(下本、调戏新人);
  // int rank;                                                                               //继承了等级(游戏数据的死东西,不可能掉级).
   
   void jianjie(){                                                                        //输出新角色的简介(jianjie),PS:英文翻译太长,还是咱中文简介.
    System.out.println("game name :"+name+"\t"+"等级是 :"+rank+"\t"
         +"改变了 :"+change+"\t"+"sex :"+sex+"\t"
         +"玩了 :"+age+"年"+"\t"+"新的帮会 :"+faction+"\t"
         +"hobby :"+hobby);
   }


   public Man(){                                                                    /**{利用super在构造方法里面调用构造方法,如果没有写super即默认为无传参super(),一次只能调用一个构造方法}*/
                                                                                             
    //super("穿着拖鞋去上学",105);                                    //调用传参的构造方法
    super();                                                                             //调用不传参的构造方法


      name ="喝多我也上树";                                                //对参数进行实例化.
    change="精炼等级,苦逼2两年自学而成";
    faction="が一将功成万枯骨┩";
    hobby="下本、调戏新人";


    jianjie();                                                                                //构造方法可以调用本类的其他的一般方法, 注意:放在实例化后,应该先实例化,再执行此输出方法,否则等于0.
   }


   public static void main(String main[]){                          //主方法,程序的入口。


    Man man=new Man(); 
   }
}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值