抽象类:不能拥有具体的方法内容的类,只能有(通俗的就是只能有方法名)!!java这样规定,可以结合现实理解。抽象的本质就是虚无缥缈的,在现实生活中根本就不存在的,只存在意识当中,所以在java世界中,抽象类也是这样,只有方法名,但是方法内容不能在抽象类中详细的写出,因为抽象的本质就是不存在的!!!所以方法体中的内容就不存在于抽象类的方法体中。
继承:子类 继承 父类 class_son extend class_dad ,这也是java继承的格式,一个子类只能有一个父类。这也是我们伦理道德关系在java世界中体现的淋漓尽致!!!子类继承父类方法后就,可直接使用父类中的变量和方法(在正常类中的方法可以直接拿到子类来使用)
书本知识能让我们明白道理,但还是做题通过实践才能真正掌握!!!!
第一题: (1)定义一个抽象类Weapon,该抽象类有两个抽象方法attack(),move() 这两个方法分别表示武器的攻击方式和移动方式。 (2)定义3个类:Tank,Flighter,WarShip都继承自Weapon, 分别用不同的方式实现Weapon类中的抽象方法。 编写测试程序main方法,创建多个不同武器的实例。并分别调用attack()和move()方法。 能用多态尽量使用多态
这一题就是abstract抽象类与extend继承的结合,实践出真知。
abstract class Weapon{
abstract void attack();
abstract void move();
}
class Tank extends Weapon{
void attack() {
System.out.println("坦克发起攻击");
}
void move() {
System.out.println("坦克移动");
}
}
class Filghter extends Weapon{
void attack() {
System.out.println("J20 发起攻击");
}
void move() {
System.out.println("J20 开始移动");
}
}
class WarShip extends Weapon{
void attack() {
System.out.println("山东舰发起攻击");
}
void move() {
System.out.println("山东舰开始移动");
}
}
public class Day20 {
public static void main(String[] args) {
Tank tank=new Tank();
Filghter filghter=new Filghter();
WarShip warship=new WarShip();
tank.attack();
tank.move();
filghter.attack();
filghter.move();
warship.attack();
warship.move();
}
}