1.8 Java之继承性,子类方法重写和super关键字

目录

继承

类继承性练习1

方法重载

方法重载注意点

super关键字

super修饰构造器

子类实例化过程

子类实例化实例

继承练习2

1)银行账户

2)信用卡账户


继承

类间只能单继承(接口能多继承,弥补单继承的缺陷)

背景:Worker,Student类继承Person类

如上图所示:程序报错,原因如下

子类能获取得到父类private属性,但由于权限设置,不能调用

 

 


类继承性练习1

Mankind类

 


方法重载

 


方法重载注意点

下例说明该点:父类有private的sleep方法(背景),不视作重写(eclipse无三角形,见下图),另外注意子类重写父类方法时,要求“三同”,见上图。

 

 


super关键字

 

创建子类对象时,默认调用父类构造器,不认为创建了父类对象,子类和父类的属性名可重合,认为是两个属性


下例为上文的super改写:

小tips:eat()等价于 this.eat()

 


super修饰构造器

1)出现一个的原因在于都要求在首行声明

2)以上第三点尤为易忽略,注意任何类都有父类,即根父

类:object类

3)正由于第三点才会要求提供空参的构造器,以防默认调用父

类的空参构造器

关注person的空参构造器中省略了super(),即调用父类object的构造器

 

上述super()可省略掉,参照第三条

关注第二个“这是。。。”出现的原因,由于嵌套的调用,最后也调用了空参的构造器


总结:

类的重载构造器第一行一定出现this或super(不管隐式或显

式),原因见第三点


 

上图注解:最多N-1个构造器使用this,剩下的必调用父类构造器,即super(形参列表),继承树向上同理,一直到object类

 

子类实例化过程

图示说明

 

过程如下

1)构造器为对象加载属性和方法

2)栈空间开辟引用变量,存储对象的引用值,堆空间开辟空

间,存储对象实体,将该空间的首地址值给变量的引用,通过引

用值指向堆空间区域

 

注意点:创建子类对象,在继承树中构造器会一直上溯(隐式或

显式),直到object类,总之,创建任何对象都会调用object的

空参的构造器


子类实例化实例

class Creature{
       public Creature(){
	System.out.println("Creature无参数的构造器");	
       }
}
class Animal extends Creature{
       public Animal(String name){
	System.out.println("Animal带一个参数的构造器,该动物的name为" + name);
       }
       public Animal(String name , int age){
	this(name);
	System.out.println("Animal带两个参数的构造器,其age为" + age);
       }
}
public class Wolf extends Animal{
       public Wolf(){
	super("灰太狼", 3);
	System.out.println("Wolf无参数的构造器");
       }
       public static void main(String[] args){
	new Wolf();
       }    }

 

输出结果为从上到下

 


继承练习2

1)银行账户

Account

private int id

private double balance

private double annualInterestRate

public Account (int id, double balance, double annualInterestRate )

public int getId()

public double getBalance()

public double getAnnualInterestRate()

public void setId( int id)

public void setBalance(double balance)

public void setAnnualInterestRate(double annualInterestRate)

public double getMonthlyInterest()

public void withdraw (double amount)

public void deposit (double amount)

 

 

关注权限修饰符为protected,子类可直接调用


2)信用卡账户

重写withdraw方法

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值