自学java (day20):super关键字

/**
 * 1、super是一个关键字,全部小写,
 * 2、super和this对比着学习
 *
 *      this:
 *              this只能出现在“实例方法”和“构造方法”中
 *              this的语法是:“this.”、、“this()”
 *              this不能出现在静态方法中
 *              this.大部分情况是可以省略的
 *              this.什么时候不能省略呢:::在区分“局部变量”和“实例变量”的时候不能省略
 *                  public void setName(String name){
 *                      this.name=name;
 *                  }
 *              this()只能出现在“构造方法”第一行,通过当前的构造方法去调用“本类”中其他的构造方法,目的是代码复用
 *
 *      super:
 *              super只能出现在“实例方法”和“构造方法”中
 *  *           super的语法是:“super.”、、“super()”
 *  *           super不能出现在静态方法中
 *  *           super.大部分情况是可以省略的
 *  *           super.什么时候不能省略呢:::子类和父类中有相同的属性,并且想在子类中访问父类的属性,super.不能省略
 *  *           super()只能出现在“构造方法”第一行,通过当前的构造方法去调用“父类”中的构造方法,
 *                      目的是:代码复用(创建子类对象的时候先初始化父类特征)
 *              super.不近可以访问属性,也可以访问方法
 *3、super()
 *          表示通过子类的构造方法调用父类的构造方法
 *          模拟现实世界中的这种场景:::要想有儿子现要有父亲
 *
 *4、重要结论:::
 *          当一个方法的第一行::
 *              既没有this()又没有super()的话,默认会有一个super()
 *              表示通过当前子类的构造方法去调用父类的无参数构造方法
 *              所以必须保证父类的无参数构造方法必须是存在的
 *5、this()和super()不能共存,都只能出现在第一行
 */
public class Super {
    public static void main(String[] args){
        //创建子类的对象
        new B();//A类的无参构造方法     B类的无参构造方法
    }
}

class A{
    public A(){
        System.out.println("A类的无参构造方法");
    }

}

class B extends A{

    public B(){
        super();
        System.out.println("B类的无参构造方法");
    }

}

--------------------------------------------------------------------------------------------------------------------------------

public class SUPer {
    public static void main(String[] args){
        CreditAccount ca1=new CreditAccount();
        System.out.println(ca1.getActno()+","+ca1.getBalance()+","+ca1.getCredit());
        CreditAccount ca2=new CreditAccount("78961",122.00,0.99);
        System.out.println(ca2.getActno()+","+ca2.getBalance()+","+ca2.getCredit());

    }
}

//私有的属性只能在本类中访问

//账户类
class Account{
    private String actno;
    private double balance;

    public Account() {
    }

    public Account(String actno, double balance) {
        this.actno = actno;
        this.balance = balance;
    }

    public String getActno() {
        return actno;
    }

    public void setActno(String actno) {
        this.actno = actno;
    }

    public double getBalance() {
        return balance;
    }

    public void setBalance(double balance) {
        this.balance = balance;
    }
}

//信用账户
class CreditAccount extends Account{
    private double credit;

    public CreditAccount() {
    }

    public CreditAccount(String acton,double balance,double credit){
     /**
      * 私有属性只能在本类中访问
        this.acton=acton;
        this.balance=balance;
      */
     //以上两行代码可以在恰当的地方使用 super(acton,balance);
        super(acton,balance);
        this.credit=credit;
    }

    public double getCredit() {
        return credit;
    }

    public void setCredit(double credit) {
        this.credit = credit;
    }
}
public class SuPer {
    //实例方法
    public void doSome(){
        System.out.println(this);
        //System.out.println(super.);
     //   System.out.println(super);
    }
    public static void main(String[] args){
        SuPer s=new SuPer();
        s.doSome();
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值