类的继承

今天学习了类的继承,什么是累的继承呢?举生活中的例子比如:我们和父母,我们继承了父母的

一些特征(当然我们同样有自己的特征),比如手机,现在的手机换代很快啊,但是我们手中的手机

却继承了以前手机的很多功能(同样又有了新的功能)。所谓继承,就是子类继承了父类的特征,但

是并一定和父类完全相同,子类一样可以有自己的特征。
那么我们需要介绍一下继承的格式,这里我们需要一个关键字extends!!!
public class 子类名 extends 父类名{

}
如果要我们对继承有一个深刻的认识,那么我们就要知道继承有什么好处。不然我们为什么要用到

继承呢。刚才我们讲过了,继承就是继承了父类的属性和方法。我们在编写另一个类是可以省掉很多

的功夫的,下面那一段代码举例:
比如我们的奥特曼打小怪兽的问题:奥特曼和小怪兽都要定义名字和血量,如果我们把他们看作是

一个角色类的子类,那么我们会省掉很多的功夫,我们只需要定义一个角色类的属性,继而继承这个

类:
//定义一个Role类
public class Role {
private String name;
public int blood;

public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
public void setBlood(int blood){
this.blood=blood;
}
public int getBlood(){
return blood;
}

继承前//定义一个奥特曼类
public class atm extends Role {

private String name;
public int blood;

public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
public void setBlood(int blood){
this.blood=blood;
}
public int getBlood(){
return blood;
}

}

继承后 //定义一个奥特曼类
public class atm extends Role{


}

是不是觉得很不可思议,但是没错,就是这样的,这么简单!!!

继承不只是在定义属性上起到了方便的效果,同样在方法上也是有着不一样的功能。
在这之前,我们需要先了解一下方法的重写(注意是重写而不是重载!!)
方法的重写指的是具有继承关系的方法,这里我们再来列举一下生活中的例子:
以前的手机和现在的手机具有继承的关系,但是以前的手机在打字时是按键,现在就是触屏了,输

入的方式上发生了变化。这就是方法重写了。。
方法重写需要注意很多的问题,除了要有继承关系外;方法的返回值数据类型,方法名,参数个数

,参数类型,参数顺序必须要和父类的方法完全一致;重写方法的访问修饰符可以大于或者等于父类

方法的访问修饰符。(访问修饰符一共有四种:private 默认 protece public,其大小关系是

private< 默认< protece <public)在调用方法时,如果你实例化的事子类,那么有限考虑调用子类

的方法,如果子类没有那么就调用父类的方法。

自动转型在继承中有很大的用处的。什么是自动转型?怎样才能用自动转型,有什么好处,这就是

我们需要关心的问题了。下面让我们通过一个实例来说明一下
Role at1=new atm();//自动转型

at1.setName("奥特曼1号");
at1.setBlood(5);
这里我们看到在实例化对象的时候,我们实例化的是子类的对象,但是我们把它赋给了主类,如果

我们把这句话去掉,改成:
atm at1=new atm();

at1.setName("奥特曼1号");
at1.setBlood(5);

因为我们在定义atm类是并没有定义setName()和setBlood()的方法,因此我们是不能调用的,

而如果我们进行自动转型,那么子类就可以调用父类里边的方法了,这是我们也知道了,要想进行自

动转型,那么就要有继承关系!!

自动转型一般在什么时候用到呢,我来说森林的故事。(森林里要进行选拔,很多很多的动物

,狮子老虎大象等等。。)如果我们定义的Pk规则都是相同的,那么PK战很热闹,难道我们每个类里

(狮子 老虎 大象 。。。)都要定义这个PK规则吗,相当的麻烦啊!!!这时我们就可以用到自动转

型了,只要我们在父类里定义一个PK方法,子类里就可以来调用它,省了很多的功夫啊 !!!
另外,在进行
构造方法的重写时,特别要注意一点:
子类中至少要有一个构造方法和父类相同,比如我们来看下面两段程序:
//父类
public class Role {
private String name;
public int blood;
public int score;



public Role(int score){
this.score=score;
}
}


//子类
public class atm1 extends Role {



}
如果是这样的话,子类就会出现报错,我们知道,默认的构造方法是不带参数的,而我们在

父类中重新定义了一个构造方法,那么子类(默认构造方法)中就不在有父类中的构造方法。所以我

们可以把父类改成这样:

//父类
public class Role {
private String name;
public int blood;
public int score;



public Role(int score){
this.score=score;
}
public Role(){ //重新定义一下默认的构造方法

}


如果父类中就是没有无参构造方法,那怎么办呢?


//如果在父类没有无参构造方法时,子类这样定义
public class atm1 extends Role {

public int number;



public atm1(int number){
this.number=number;
}

}
结果是报错,那么到底怎样才能行得通呢?首先我们要知道,子类是不可以继承父类的构造

方法的!!所以我们在子类中必定会调用父类的构造方法,如果父类中有无参构造方法,则调用无参

构造方法,如果父类中只有有参构造方法,那么这时候我们就要用到关键字super!!!
而且我们必须要用super去调用一下父类中的有参构造方法。所以上述程序可以写成

//父类
public class Role {
private String name;
public int blood;
public int score;



public Role(int score){
this.score=score;
}

}


//子类




public class atm1 extends Role {

public int number;



public atm1(int number){
super(number);//调用父类的构造方法
}

}


而如果我们一定要重新定义构造方法在子类里,那么还是记得在父类中写一个无参数的构造

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值