Java的继承

今天来聊一个快被说烂了的话题,继承。

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();
        }
    }
}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值