java抽象类,接口,枚举练习题

第一题:

答案:

class Animal{
    //成员变量
    protected String  name;
    protected int weight;
    //构造方法
    public Animal(){
        this.name="refer";
        this.weight=50;
    }
    public Animal(String name,int weight){
        this.name=name;
        this.weight=weight;
    }
    //成员方法
    public void show(){
        System.out.println("名字:"+this.name+" 体重:"+this.weight);
    }
}
class Dog extends Animal{
    //成员变量
    private String color;
    //构造方法
    public Dog(String name,int weight){
        super(name,weight);  //实例化的时候要先初始化父类
        color="yellow";
    }
    //成员方法
    public void show(){  //重写,返回值类型,方法名,形参全部相同,且子类访问限制符要大于等于父类访问限制符
        System.out.println("名字:"+this.name+" 体重:"+this.weight+" 颜色:"+this.color);
    }
}
public class P7_1 {
    public static void main(String[] args) {
        Dog dog=new Dog("refer",50);
        dog.show();
    }
}

第二题:

答案:

interface IPay{
    double pay();  //符合阿里编码规范,就不再加public abstract,提高代码简洁性
}
class Winter implements IPay{
    int elc=145;  //默认是public static final
    double money=0.49;
    public double pay(){  //实现接口中的抽象方法,且不能使用默认修饰符,必须使用public
        return elc*money;
    }
}
class Summer implements IPay{
    int elc=125;
    double money=0.49;
    public double pay(){
        return elc*money;
    }
}
class PayMoney{
    public void season(IPay pay){
        if (pay instanceof Winter){  //如果是冬天
            Winter winter=new Winter();
            System.out.println("冬天:"+winter.pay());
        }
        else if (pay instanceof Summer){  //如果是夏天
            Summer summer=new Summer();
            System.out.println("夏天:"+summer.pay());
        }
        else {  //如果既不是冬天也不是夏天
            System.out.println("请传入正确的参数");
        }
    }
}
public class P7_1 {
    public static void main(String[] args) {
        PayMoney p=new PayMoney();
        p.season(new Winter());  //使用匿名对象
        p.season(new Summer());  //使用匿名对象
    }
}

 

第三题:

答案:

interface Animal{
    String address="广州动物园";
    default void eat(){   //接口里default和static修饰的方法可以进行实现
        System.out.println("每天吃得饱饱的!");
    }
    static void show(){
        System.out.println("我是动物!");
    }
    void ability();  //省略pubic abstract,提高代码简洁性
}
class Bird implements Animal{
    public Bird(){
        System.out.println("我是广州动物园的鸟。");
    }
    @Override    //添加注解,利用编译器的检查优势,提高开发效率
    public void eat(){   //重写方法必须用public修饰,不能使用默认的访问权限
        Animal.show();
        System.out.println("我爱吃虫子!每天吃得饱饱的!");
    }

    @Override
    public void ability() {
        System.out.println("我会飞!");
    }
}
class Fish implements Animal{
    public Fish(){
        System.out.println("我是广州动物园的鱼。");
    }
    @Override
    public void eat(){
        Animal.show();
        System.out.println("我爱吃小虾!每天吃得饱饱的!");
    }

    @Override
    public void ability() {
        System.out.println("我会游泳!");
    }
}
class Monkey implements Animal{
    public Monkey(){
        System.out.println("我是广州动物园的猴子。");
    }
    @Override
    public void eat(){
        Animal.show();
        System.out.println("我爱吃香蕉!每天都吃得饱饱的!");
    }

    @Override
    public void ability() {
        System.out.println("我会爬树!");
    }
}
public class Test {
    public static void main(String[] args) {
        Bird bird=new Bird();
        bird.eat();
        bird.ability();

        Fish fish=new Fish();
        fish.eat();
        fish.ability();

        Monkey monkey=new Monkey();
        monkey.eat();
        monkey.ability();
    }
}

第四题:

答案:

第五题:

答案:

enum ReviewPlan{
    //枚举成员必须放在类的一开始,使用enum来枚举就必须省略public static final,如果使用自定义枚举类则规则不一样
    Monday("星期一","数学"),
    Tuesday("星期二","数据结构"),
    Wednesday("星期三","Java"),
    Thursday("星期四","日语"),
    Friday("星期五","离散数学"),
    Saturday("星期六","Html+Css+JavaScript"),
    Sunday("星期天","电影艺术");
    
    private final String day;  //因为枚举针对的是有限个且确定的对象,不希望被修改,所以用private final
    private final String plan;

    private ReviewPlan(String day,String plan){  //私有化类的构造器
        this.day=day;
        this.plan=plan;
    }
    public String toString(){  //重写enum里自带的toString方法
        return this.day+this.plan;
    }
}
public class Test {
    public static void main(String[] args) {
        for (ReviewPlan r:ReviewPlan.values()){
            System.out.println(r.name()+"的属性是:"+r.toString());
        }
    }
}

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值