super

Posted fkuennhvo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了super相关的知识,希望对你有一定的参考价值。


lesson ten                             2018-04-29  14:58:07


 

super:

  1.可以用来修饰属性、方法、构造器

技术分享图片
 1 public class CheckAccount extends Demo1 {
 2 
 3     public double getOverdraft() {
 4         return overdraft;
 5     }
 6 
 7     public void setOverdraft(double overdraft) {
 8         this.overdraft = overdraft;
 9     }
10 
11     private double overdraft;
12 
13     public CheckAccount(int id, double balance, double annualInterestRate,
14             double overdraft) {
15         super(id, balance, annualInterestRate);
16         this.overdraft = overdraft;
17     }
18 
19     public void withdraw(double amount) {
20         if (balance >= amount) {
21             balance -= amount;
22         } else if (overdraft + balance >= amount) {
23             overdraft = overdraft - (amount - balance);
24             balance = 0;
25         } else {
26             System.out.println("透支额度不够");
27         }
28     }
29 }
子类

  2.当子类与父类有同名的属性时,可以通过“super.该属性”显式的调用父类中声明的属性。

技术分享图片
 1 public class Demo1 {
 2     private int id;
 3              double balance;
 4     private double annualInterestRate;
 5     
 6     public Demo1(){
 7         System.out.println("这是空参构造器");
 8     }
 9         
10     public Demo1(int id, double balance, double annualInterestRate) {
11         super();
12         this.id = id;
13         this.balance = balance;
14         this.annualInterestRate = annualInterestRate;
15     }
16 
17     public int getId() {
18         return id;
19     }
20 
21     public void setId(int id) {
22         this.id = id;
23     }
24 
25     public double getBalance() {
26         return balance;
27     }
28 
29     public void setBalance(double balance) {
30         this.balance = balance;
31     }
32 
33     public double getAnnualInterestRate() {
34         return annualInterestRate;
35     }
36 
37     public void setAnnualInterestRate(double annualInterestRate) {
38         this.annualInterestRate = annualInterestRate;
39     }
40     
41     public double getMonthlyInterest() {//月利率
42         return this.annualInterestRate/12;
43     }
44     //存钱
45     public void deposit(double amount) {
46         this.balance += amount;
47     }
48     //取钱
49     public void withdraw(double amount) {
50         if (this.balance >= amount) {
51                 this.balance -= amount;            
52         }else {
53             System.out.println("余额不足");
54         }
55     }
56 }
父类

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


 

super修饰构造器: 

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

   2.在构造器内部,“super(形参列表)”必须要声明在首行!
   3.在构造器内部,“super(形参列表)”/“this(形参列表)”只能出现一个
   4.当构造器中,不显示调用“super(形参列表)”/“this(形参列表)”其中之一,
   5.默认调用父类空参的构造器。
 建议:设计一个类时,尽量要提供一个空参

技术分享图片
 1 public class SubClass {
 2 
 3     public static void main(String[] args) {
 4         Dog dog = new Dog("XiaoMing", "DaHuang", 5);
 5     }
 6 }
 7   
 8 class Creator{
 9     private int age;
10     public int getAge() {
11         return age;
12     }
13     public void setAge(int age) {
14         this.age = age;
15     }
16     
17     public Creator(int age){
18         this.age = age;
19         System.out.println("1");
20         System.out.println("its age is "+this.age);
21     }
22 }
23 
24 class Animal extends Creator{
25     private String name;
26     public String getName() {
27         return name;
28     }
29     public void setName(String name) {
30         this.name = name;
31     }
32     
33     public Animal(String name, int age){
34         super(age);
35         this.name = name;
36         System.out.println("2");
37         System.out.println("its name is "+this.name);
38     }
39 }
40 
41 class Dog extends Animal{
42     private String hostName;
43     public String getHostName() {
44         return hostName;
45     }
46     public void setHostName(String hostName) {
47         this.hostName = hostName;
48     }
49     
50     public Dog(String hostname,String name, int age){
51         super(name, age);
52         this.hostName = hostname;
53         System.out.println("3");
54         System.out.println("Dog belong to "+this.hostName);
55     }
56 }
子类对像实例化的全过程

技术分享图片

 

 



 





以上是关于super的主要内容,如果未能解决你的问题,请参考以下文章

片段中的Android onActivityResult

配置更改后片段丢失过渡动画

片段内部静态类和gradle问题

savedInstanceState 在片段中始终为 null

无法通过接口获取与片段通信的活动

如何从片段到活动而不会干扰片段的可重用性