类的继承
1.类继承的概念和应用
a.继承的关键字:extends
b.实例:
创建一个annimals类
public class annimals {
private int blood;//定义血量
private String name;//动物的名字
public void setBlood(int blood) {
this.blood = blood;
}
public int getBlood() {
return blood;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void speed(){
System.out.println(name+"的移动速度是100m/s,"+"血量是"+blood);
}
public void eat(){
System.out.println();
}
}
创建一个horse类继承annimals类
public class horse extends annimals{
public void eat(){
System.out.println(this.getName()+"是素食动物,"+"血量是"+this.getBlood());
}
public void jump(){
System.out.println(this.getName()+"跳跃的距离是50m");
}
}
函数的入口
public static void main(String[] args) {
实例化一个父类annimals对象
annimals an=new annimals();
an.setBlood(1000);
an.setName("狮子");
an.eat();
an.speed();
实例化一个子类horse对象
horse ho=new horse();
ho.setBlood(2000);
ho.setName("兔子");
ho.eat();
ho.jump();
//实例化一个annimals类,为他的子类horse类
annimals Ant=new horse();
Ant.setBlood(4000);
Ant.setName("狗");
Ant.speed();
Ant.eat();
}
}
从annimls是horse的父类,horse自然就是子类了
子类拥有父类的属性和方法
但是注意的:
01.子类只能从父类中继承非private的属性,如果子类要拥有父类的私有属性,必须通过调用父类的属性方法,
来拥有父类的的属性。
例如:
父类中的
private int blood;//定义血量
private String name;//动物的名字
子类要调用通过调用方法
an.setBlood(1000);
an.setName("狮子");
02.其他的子类都可以用,但要注意修饰符(public protected 默认的 private)范围:
public :继承只能在同一个工程中
protected :在同一个包的所有类
默认的:存在继承关系
private :该类私有的,不能继承
2.方法的重写
当子类有自己的不同于父类的方法时;子类必须重写方法
注意的地方:重写的方法必须与父类的方法名完全相同
例如:子类中的
public void eat(){
System.out.println(this.getName()+"是素食动物,"+"血量是"+this.getBlood());
}
与父类中的
public void eat(){
System.out.println();
}
方法名完全相同
与方法的重载区别
方法的重载是在同一个类中,而方法的重写是在不同的类中且必须存在继承时
3.多态的理解
1.产生的原因:由于子类与父类的方法,存在的重载,子类会转变为父类
2例如:主函数中
//实例化一个annimals类,为他的子类horse类
annimals Ant=new horse();
Ant.setBlood(4000);
Ant.setName("狗");
Ant.speed();
Ant.eat();
解释:new horse() 会自然转变成父类
函数的输出为:
狗的移动速度是100m/s,血量是4000
狗是素食动物,血量是4000
原因分析:new horse()调用自己的eat()方法
对于Ant.speed();由于new horse()重写了annimals的方法,因此是调用自己的方法