/*
1.super不是引用类型,super中存储的不是内存地址,super指向的不是父类对象.
2.super代表的是当前子类对象中的父类型特征。
3.什么时候使用super?
子类和父类中都有某个数据,例如,子类和父类中都有name这个属性。
如果要在子类中访问父类中的name属性,需要使用 super.
4.super可以用在什么地方?
第一:super可以用在成员方法中.不能用在静态方法中.
第二:super可以用在构造方法中.
*/
//经理
public class Manager extends Employee{
String name = "李四";
//子类将父类中的work方法重写了.
public void work(){
System.out.println("经理在工作!");
}
//成员方法
public void m1(){
//this.work();
//work();
super.work();
System.out.println(this.name);
System.out.println(name);
System.out.println(super.name);
}
/*
//this和super相同,都不能用在静态上下文中。
public static void m1(){
System.out.println(super.name);
}
*/
/*
super关键字用在构造方法中:
语法:super(实参);
this(实参)通过一个构造方法调用另一个构造方法。
作用:通过子类的构造方法去调用父类的构造方法.
语法规则:一个构造方法第一行如果没有this(...);也没有显示的去调用super(...);
系统会默认调用super();
注意:super(...);的调用只能放在构造方法的第一行.
super(....)和this(....)不能共存。
super(...);调用了父类中的构造方法,但是并不会创建父类对象。
在java语言中只要是创建java对象,那么Object中的无参数构造方法一定会执行。
单例模式的缺点:单例模式的类型无法被继承。
*/
public class DebitAccount extends Account{
//Field
//独特属性
private double debit;
//Constructor
public DebitAccount(){
//super();
}
public DebitAccount(String actno,double balance,double debit){
//通过子类的构造方法去调用父类的构造方法,作用是:给当前子类对象中的父类型特征赋值。
super(actno,balance);
this.debit = debit;
}
//setter and getter
public void setDebit(double debit){
this.debit = debit;
}
public double getDebit(){
return debit;
}
}
转载于:https://blog.51cto.com/hangtiangazi/1661181