今天来聊一个快被说烂了的话题,继承。
1. 继承的概念
继承是面向对象编程中的一个重要概念,它允许一个类(子类)继承另一个类(父类)的属性和
方法。通过继承,子类可以复用父类的代码,并且可以添加自己的特性。
对多个类的操作
如果同时存在多个类,这些类都具备很多相同的属性、特征、方法,那么我们可以实现将相同部分的属性和方法定义在一个父类中,这些类都来继承父类,可以直接继承父类的属性和方法。
1
如果父类中的属性和方法使用了受限制的访问权限修饰符修饰,同样子类也不一定可以
直接调用.
2
如果在父类中使用封装的方法,子类也可以调用。
3
类似于私有的属性和方法,子类继承了但是不表现(无法直接调用)。
4
protected 访问权限修饰符修饰内容可以在子类直接使用,在不同包的其他类中就不能
使用。
5
子类也可以定义自己的属性和方法 ,实现基于父类的基础进行扩展。
如果你继承了一个类,但是你没有做扩展,那么就没必要继承 ,父类可以满足需求。
6
使用父类作为参数类型/容器存储类,可以接收父类所有的子类对象。
继承的语法:extends
import java.util.LinkedList;
import java.util.List;
abstract class Plant {
protected int lifeInit = 300;
protected boolean isAttack = false;
protected boolean isImmediate = false;
abstract void shootOrBomb();
void hurted(int hurtNumber) {
lifeInit-=hurtNumber;
}
}
abstract class Zombie{
protected int lifeInit = 100;
protected boolean isSmall = true;
abstract void eat();
abstract void hurted();
}
class Peashooter extends Plant {
public Peashooter() {
this.isAttack = true;
}
@Override
void shootOrBomb() {
System.out.println("豌豆射手发射");
}
}
class Jalapeno extends Plant {
public Jalapeno() {
this.lifeInit = Integer.MAX_VALUE;
this.isImmediate = true;
}
@Override
void shootOrBomb() {
System.out.println("火爆辣椒爆炸");
hurted(Integer.MAX_VALUE);
}
}
class NonHatZombies extends Zombie{
@Override
void eat() {
}
@Override
void hurted() {
}
}
class HatsZombies extends Zombie{
protected int hatLifeInit = 50;
@Override
void eat() {
}
@Override
void hurted() {
}
void hurtHat(int hurtNumber){
hatLifeInit-=hurtNumber;
}
}
public class PVZexamples {
public static void main(String[] args) {
List<Peashooter> peashooters = new LinkedList<>();
List<Jalapeno> jalapenos = new LinkedList<>();
peashooters.add(new Peashooter());
peashooters.add(new Peashooter());
peashooters.add(new Peashooter());
peashooters.add(new Peashooter());
for (Peashooter task : peashooters) {
task.shootOrBomb();
}
}
}
13万+

被折叠的 条评论
为什么被折叠?



