刚从大学进入工作岗位的实习生,java方向,进入工作岗位后才知以前学的东西只是知其一不知其二....再从温习继承一块有个疑问
//定义一个昆虫类,里面有攻击和移动两个方法
package test03;
public class Insect {
private int size;
private String color;
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public Insect(int size, String color) {
this.size = size;
this.color = color;
}
// 移动
public void move() {
System.out.println("move");
}
// 攻击
public void attack() {
// 攻击之前要移动
move();
System.out.println("attack");
}
}
package test03;
//定义一个蜜蜂类,并继承昆虫夫类
public class Bee extends Insect {
public Bee(int size, String color) {
super(size, color);
}
@Override
public void move() {
System.out.println("fly");
}
@Override
public void attack() {
move();
//这里super会调用夫类Insect.attack方法
super.attack();
//System.out.println("Attack");
}
}
/*测试类*/
public class TestMain {
public static void main(String[] args) {
Bee b=new Bee(1, "red");
b.attack();
}
}
//显示效果是
fly
fly
attack
第一个fly是执行了Bee类里的move方法,super.attack();执行后会走到父类里的attack里
再继续为什么走Bee的move()而不是父类的move()
why not?
fly
move
attack
精慕HU
jeck猫
温温酱
HUWWW
函数式编程
慕桂英3389331
慕田峪7331174
相关分类