类的继承总结
1.Java继承语法格式
继承关键字是:extends
继承的格式:
public class 类名 extends 类名 {
}
注意:
在继承的过程中,子类继承到了父类的所有属性和方法,但不一定能调用父类所有的属性和方法。类有public、protected、默认的、private这四种访问修饰符;若子类和父类在同一包下,则子类可继承到父类中访问修饰符为public、private和默认的属性和方法子类都可以调用;在不同包下时可调用public和protected的属性和方法;public在子类和父类时同一项目下可调用;而private只能在同一类中被调用;
方法的重写
重写条件:存在继承关系
返回值数据类型、方法名、参数类型、参数个数、参数顺序必须要完全一致
子类重写方法时可以扩大访问修饰符的范围(但是不能缩小)
在子类中父类的方法不适合子类时使用方法重写,
例:学生的学习方法,在小学生、大学生这些类中的学习方法有所改变,所以在这些子类中要重新定义学习方法,这就是方法重写。要在方法重写后调用父类的方法用super关键字例:super 对象名.方法
自动转型
条件
必须要存在继承关系
格式
父类名 对象名 = new 子类名();
问题:无法调用子类的方法
原因:java的编译机制;
英语老师现在是给大学生教英语。也可以给高中生、初中生、小学生、幼儿园学生教英语
teach(大学生){ study(); }
teach(高中生){ study(); }
teach(初中生){ study(); }
teach(小学生){ study(); }
teach(幼儿园学生){ study(); }
teach(学生){
study();
}
练习:1.回合制游戏:德玛(四个技能(技能名和攻击力))+卡牌(四个技能(技能名和攻击力))要去战斗,直到一方的血量为0的时候结束战斗,输出谁胜利了。
德玛和德玛战斗
卡牌和卡牌战斗
核心代码:
public class Dema1 extends Dema {
//重写父类的对战方法
public void fight1(Dema de){
//De对象减少血量的方法
de.setBlood(de.getBlood()-1);
if(de.getBlood()<=0){
System.out.println(getName()+"胜利了!!");
}
}
while(de1.getBlood() > 0 && ka.getBlood() > 0){
de1.fight(ka);// 德玛1攻击卡牌
if(ka.getBlood() <= 0){
System.out.println(de1.getName()+"胜利!");
break;
}
1.Java继承语法格式
继承关键字是:extends
继承的格式:
public class 类名 extends 类名 {
}
注意:
在继承的过程中,子类继承到了父类的所有属性和方法,但不一定能调用父类所有的属性和方法。类有public、protected、默认的、private这四种访问修饰符;若子类和父类在同一包下,则子类可继承到父类中访问修饰符为public、private和默认的属性和方法子类都可以调用;在不同包下时可调用public和protected的属性和方法;public在子类和父类时同一项目下可调用;而private只能在同一类中被调用;
方法的重写
重写条件:存在继承关系
返回值数据类型、方法名、参数类型、参数个数、参数顺序必须要完全一致
子类重写方法时可以扩大访问修饰符的范围(但是不能缩小)
在子类中父类的方法不适合子类时使用方法重写,
例:学生的学习方法,在小学生、大学生这些类中的学习方法有所改变,所以在这些子类中要重新定义学习方法,这就是方法重写。要在方法重写后调用父类的方法用super关键字例:super 对象名.方法
自动转型
条件
必须要存在继承关系
格式
父类名 对象名 = new 子类名();
问题:无法调用子类的方法
原因:java的编译机制;
英语老师现在是给大学生教英语。也可以给高中生、初中生、小学生、幼儿园学生教英语
teach(大学生){ study(); }
teach(高中生){ study(); }
teach(初中生){ study(); }
teach(小学生){ study(); }
teach(幼儿园学生){ study(); }
teach(学生){
study();
}
练习:1.回合制游戏:德玛(四个技能(技能名和攻击力))+卡牌(四个技能(技能名和攻击力))要去战斗,直到一方的血量为0的时候结束战斗,输出谁胜利了。
德玛和德玛战斗
卡牌和卡牌战斗
核心代码:
public class Dema1 extends Dema {
//重写父类的对战方法
public void fight1(Dema de){
//De对象减少血量的方法
de.setBlood(de.getBlood()-1);
if(de.getBlood()<=0){
System.out.println(getName()+"胜利了!!");
}
}
while(de1.getBlood() > 0 && ka.getBlood() > 0){
de1.fight(ka);// 德玛1攻击卡牌
if(ka.getBlood() <= 0){
System.out.println(de1.getName()+"胜利!");
break;
}