「Java学习打卡」33、面向对象程序练习

题目要求:

  1. 定义一个抽象类Person,包含抽象方法eat(),封装属性name、sex、age,声明包含三个参数的构造方法;
  2. 定义一个Chinese类,继承自Person类,重写父类的eat()方法,并定义一个自己特有的方法shadowBoxing();
  3. 定义一个English类,继承自Person类,重写父类的eat()方法,并定义一个自己特有的方法horseRiding();
  4. 编写测试类,定义一个showEat()方法,使用父类作为方法的形参,实现多态,分别调用showEat()方法,通过强制类型转换调用各自类特有的方法;
package case2;
import java.util.Scanner;
public class Task2 {
	public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String cName = sc.next();
        String cSex = sc.next();
        int cAge = sc.nextInt();
        String eName = sc.next();
        String eSex = sc.next();
        int eAge = sc.nextInt();
        Person person1=new Chinese(cName,cSex,cAge);
        showEat(person1);
        Person person2=new English(eName,eSex,eAge);
        showEat(person2);
        Chinese c = (Chinese)person1;
        ((Chinese) person1).shadowBoxing();
        English e = (English)person2;
        ((English) person2).shadowBoxing();
    }

    public static void showEat(Person person){
        if(person instanceof Chinese){
            Chinese c = (Chinese)person;
            c.eat();
        }else if (person instanceof English){
            English e = (English)person;
            e.eat();
        }
    }
}

abstract class Person {
    public String name;
    public String sex;
    public int age;
    public Person(String n,String s,int a){
        this.name=n;
        this.sex=s;
        this.age=a;
    }
    public void eat(){

    }
}

class Chinese extends Person {
    public Chinese(String n, String s, int a) {
        super(n, s, a);
    }
    public void eat(){
        System.out.println("姓名:"+name+",性别:"+sex+",年龄:"+age+",我是中国人,我喜欢吃饭!");
    }
    public void shadowBoxing(){
        System.out.println(""+name+"在练习太极拳!");
    }
}

class English extends Person {
    public English(String n, String s, int a) {
        super(n, s, a);
    }
    public void eat(){
        System.out.println("姓名:"+name+",性别:"+sex+",年龄:"+age+",我是英国人,我喜欢吃三明治!");
    }
    public void shadowBoxing(){
        System.out.println(""+name+"在练习骑马!");
    }
}
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值