300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > java练习题(面向对象前两天练习作业(继承多态接口和抽象类))

java练习题(面向对象前两天练习作业(继承多态接口和抽象类))

时间:2018-12-30 14:36:00

相关推荐

java练习题(面向对象前两天练习作业(继承多态接口和抽象类))

1.

【编号:1001】一位面向对象的程序员小李,在编程过程中需要描述和处理个人信息,于是定义了类Person,如下所示:public class Person {private String name; // 姓名private int age; // 年龄private String birthday; // 生日/*getters and setters请自行生成*/// 获取信息的方法public String getInfo() {return "Person[name=" + name + ", age=" + age + ", birthday=" + birthday + "]";}}一周以后,小李又遇到了新的需求,需要描述和处理学生信息,于是他又定义了一个新的类:public class Student {private String name; // 姓名private int age; // 年龄private String birthday; // 生日private String school; // 所在学校/*getters and setters请自行生成*/// 获取信息的方法public String getInfo() {return "Student[name=" + name + ", age=" + age + ", birthday=" + birthday + ", school=" + school + "]";}}观察发现,这两个类的结构太接近了,后者比前者仅多了一个属性,却需要重复定义其他内容。请根据类的继承机制,帮助小李重新设计Student类。并测试获取Student对象的属性信息。

参考答案

public class Student extends Person {private String school; // 所在学校public Student() {}public Student(String name, int age, String birthday, String school) {super(name, age, birthday);this.school = school;}// 获取信息的方法public String getInfo() {return "Student[name=" + getName() + ", age=" + getAge() + ", birthday=" + getBirthday() + ", school=" + school + "]";}

2.

【编号:1002】请补充下列代码,使测试类编译通过并运行。已知代码材料class Fu {public void methodFu(){System.out.println("我是父类的method方法");}}class Zi {}public class Demo1 {public static void main(String[] args) {// 创建子类对象,调用方法Zi z = new Zi();z.methodFu();z.methodZi();}}运行结果:我是父类的method方法我是子类的method方法

参考答案

class Zi extends Fu{public void methodZi(){System.out.println("我是子类的method方法");}}

3.

【编号:1003】请补充下列代码,使得程序按照顺序分别输出30 20 10。//class Fu {////}////class Zi extends Fu{// int num = 20;// public void method(){// int num = 30;// // 这里要求输出30// System.out.println();// // 这里要求输出20// System.out.println();// // 这里要求输出10// System.out.println(super.num);// }//}////public class Demo2 {// public static void main(String[] args) {// Zi z = new Zi();// z.method();// }//}//运行结果:// 30// 20// 10

参考答案

class Fu {int num = 10;}class Zi extends Fu{int num = 20;public void method(){int num = 30;// 这里要求输出30System.out.println(num);// 这里要求输出20System.out.println(this.num);// 这里要求输出10System.out.println(super.num);}}

4.

请对下列继承代码进行优化和丰富,使得创建子类对象的时候,可以通过有参构造进行初始化,随后通过getXxx方法获取属性并输出。class Person{private String name;private int age;public Person() {}public Person(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}class Student extends Person {}public class Demo3 {public static void main(String[] args) {Student s = new Student();s.setName("张三");s.setAge(23);}}运行结果张三...23

参考答案

class Person{private String name;private int age;public Person() {}public Person(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}class Student extends Person {public Student() {}public Student(String name, int age) {super(name,age);}}public class Demo3 {public static void main(String[] args) {Student s = new Student("张三",23);System.out.println(getName+getAge);}}

5.

某手机系统5版本的时候,引入了【语音助手】的功能,但最开始的【语音助手】只能说英文,后期版本更新到6版本的时候,【语音助手】才能够在说英文的基础上又会说中文,请结合继承的思想,对下列代码进行补充,最终在控制台上输出(speak english)(说中文)class PhoneVersion5{public void speak(){System.out.println("speak english");}}class PhoneVersion6 extends PhoneVersion5 {}public class Demo4 {public static void main(String[] args) {PhoneVersion6 pv6 = new PhoneVersion6();pv6.speak();}}运行结果:speak english说中文

参考答案

class PhoneVersion5{public void speak(){System.out.println("speak english");}}class PhoneVersion6 extends PhoneVersion5 {@Overridepublic void speak(){super.speak();System.out.println("说中文");}}public class Demo4 {public static void main(String[] args) {PhoneVersion6 pv6 = new PhoneVersion6();pv6.speak();}}

6.

分析事物的共性,并抽取出正确的继承体系 现有基础班老师(BaseTeacher)和就业班老师(WorkTeacher)两个类,两者都含有姓名和年龄两个属性,还有一个讲课的行为teach,但不同的是,基础班老师的teach方法输出【基础班老师讲JavaSE】,就业班老师的teach方法输出【就业班老师讲JavaEE】,请用代码实现。 运行结果:张三老师...23基础班老师讲JavaSE李四老师...24就业班老师讲JavaEE

参考答案

public class teacher {private String name;private int age;public teacher() {}public teacher(String name, int age) {this.name = name;this.age = age;}public void teach(){}}public class WorkTeacher extends teacher {public WorkTeacher() {}public WorkTeacher(String name, int age) {super(name, age);}@Overridepublic void teach() {System.out.println("【就业班老师讲JavaEE】");}}public class BaseTeacher extends teacher{public BaseTeacher() {}public BaseTeacher(String name, int age) {super(name, age);}@Overridepublic void teach() {System.out.println("【基础班老师讲JavaSE】");}}public class Demo {public static void main(String[] args) {BaseTeacher b = new BaseTeacher("张三老师",23);WorkTeacher w = new WorkTeacher("李四老师",24);b.teach();w.teach();}}

7.

结合继承的思想,分析下列需求并实现定义项目经理类Manager 【属性:姓名 工号 工资 奖金】【行为:工作work】定义程序员类Coder【属性:姓名 工号 工资】【行为:工作work】要求:通过有参构造创建两个类的对象,并调用各自的work方法运行结果:姓名为:张三,工号为:9527,工资为:10000.0,的程序员正在编写代码姓名为:李四,工号为:9528,工资为:15000.0,奖金为:2000.0,的项目经理正在管理程序员写代码

参考答案

public class staff {private String name;private int number;private int salary;public staff() {}public staff(String name, int number, int salary) {this.name = name;this.number = number;this.salary = salary;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getNumber() {return number;}public void setNumber(int number) {this.number = number;}public int getSalary() {return salary;}public void setSalary(int salary) {this.salary = salary;}public void work(){}}public class Manager extends staff {private int bonus;public Manager() {}public Manager(String name, int number, int salary, int bonus) {super(name, number, salary);this.bonus = bonus;}public int getBonus() {return bonus;}public void setBonus(int bonus) {this.bonus = bonus;}@Overridepublic void work() {System.out.println(getName()+",工号为:"+getNumber()+",工资为:"+getSalary()+",奖金为:"+bonus+",的项目经理正在管理程序员写代码");}}public class Coder extends staff {public Coder() {}public Coder(String name, int number, int salary) {super(name, number, salary);}@Overridepublic void work() {System.out.println(getName()+",工号为:"+getNumber()+",工资为:"+getSalary()+",的程序员正在编写代码");}}public class Demo {public static void main(String[] args) {Manager m = new Manager("张三",110,0,0);Coder c = new Coder("李四",120,0);c.work();m.work();}}

8.

某公司骨干程序员设计了一个TestA类,该类包含了公司的核心业务逻辑method方法,现需要将TestA交给其他同事去使用,其他同事可以丰富一些新的方法,但不能改动原有功能(不能改method方法实现内容),如果TestA类交给你来写,怎样可以强制method方法不能改?请结合以上信息,将如下代码补齐。class TestA {public void method(){System.out.println("我是核心业务逻辑,可以使用,但绝对不能改动!");}}class TestB {/*该类需要使用TestA中的method方法,还需要增加一些新的功能*/}public class Demo7 {public static void main(String[] args) {TestB t = new TestB();t.method();t.show();t.print();}}运行结果:我是核心业务逻辑,可以使用,但绝对不能改动!新增加的show方法新增加的print方法

参考答案

public class Demo {class TestA {public final void method(){System.out.println("我是核心业务逻辑,可以使用,但绝对不能改动!");}}class TestB extends TestA {public void show(){System.out.println("我是show方法");}public void print(){System.out.println("我是print方法");}}public class Demo7 {public static void main(String[] args) {TestB t = new TestB();t.method();t.show();t.print();}}}

9.

现有两种事物,【手机】和【智能手机】 【手机Phone】带有(属性:品牌brand,价格price)(行为:打电话call,发短信sendMessage,玩游戏playGame) 【智能手机SmartPhone】需要在手机的功能之上,将打电话的功能做进一步增强(视频通话),请结合继承思想来设计两个类,另外,假设所有的手机都有属性屏幕的尺寸(int size),而且假设所有手机的屏幕尺寸为6,该如何补齐下列代码?public class Demo8 {public static void main(String[] args) {SmartPhone o = new SmartPhone("大米",2000);System.out.println("品牌:" + ? + ",价格:" + ? + ",尺寸:" + ?);o.call();o.sendMessage();}}运行结果:品牌:大米,价格:2000.0,尺寸:6打电话视频通话发短信

参考答案

public class Phone {private String brand;private int price;private final int size=6;public Phone() {}public Phone(String brand, int price) {this.brand = brand;this.price = price;}public String getBrand() {return brand;}public void setBrand(String brand) {this.brand = brand;}public int getPrice() {return price;}public void setPrice(int price) {this.price = price;}public int getSize() {return size;}public void call(){System.out.println("打电话");}public void sendMessage(){System.out.println("发短信");}public void playGame(){System.out.println("玩游戏");}}public class SmartPhone extends Phone {public SmartPhone() {}public SmartPhone(String brand, int price) {super(brand, price);}@Overridepublic void call() {System.out.println("打开视频模式");super.call();}}public class Demo {public static void main(String[] args) {SmartPhone o = new SmartPhone("大米",2000);System.out.println("品牌:" + o.getBrand() + ",价格:" + o.getPrice() + ",尺寸:" + o.getSize());o.call();o.sendMessage();}}

10.

请在main方法中通过多态创建对象,随后使用对象,使得程序符合最终运行结果public class Demo1 {/*请在main方法中通过多态创建对象,随后使用对象,使得程序符合最终运行结果*/public static void main(String[] args) {}}class Fu {int num = 10;public void method(){System.out.println("父类的method方法");}}class Zi extends Fu{int num = 20;public void method(){System.out.println("子类的method方法");}public void show(){System.out.println("子类的show方法");}}运行结果:10子类的method方法子类的show方法

参考答案

Fu f=new Zi ();System.out.println(f.num);f.show;f.mentod;

11.

定义人(Person)类,人类中有吃饭方法(eat)和工作方法(work)。定义超人(SuperMan)类,超人类中有救人方法(save)并且超人也属于人类。要求:使用多态的方式创建超人对象,调用吃饭和工作的方法。再将此对象转为超人对象,调用救人的方法。

参考答案

public class Person {public void eat(){System.out.println("人类吃饭");}public void work(){System.out.println("人类工作");}}public class SuperMan extends Person{public void save(){System.out.println("超人变身");}}public class Demo {public static void main(String[] args) {Person p=new SuperMan();p.eat();p.work();SuperMan s=(SuperMan) p;s.save();}}

12.

定义动物类 属性:年龄,颜色 生成空参有参构造,set和get方法 行为:eat(String something)方法(无具体行为,不同动物吃的方式和东西不一样,something表示吃的东西)定义狗类继承动物类,行为:eat(String something)方法,看家lookHome方法(无参数)定义猫类继承动物类,行为:eat(String something)方法,逮老鼠catchMouse方法(无参数)定义Person类 生成空参有参构造,set和get方法 属性:(姓名,年龄) 行为:keepPet( ????? ,String something)方法​ 功能:喂养【宠物狗】和【宠物猫】,问号处自己思考,something表示喂养的东西定义测试类,使用Perosn对象调用keepPet方法,实现运行结果运行结果:年龄为30岁的老王养了一只黑颜色的2岁的宠物2岁的黑颜色的狗两只前腿死死的抱住骨头猛吃年龄为25岁的老李养了一只灰颜色的3岁的宠物3岁的灰颜色的猫眯着眼睛侧着头吃鱼

参考答案

package cn.Work1130.homeWork_03;public abstract class Animal {private String name;private int age;private String color;public Animal() {}public Animal(String name, int age, String color) {this.name = name;this.age = age;this.color = color;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getColor() {return color;}public void setColor(String color) {this.color = color;}public abstract void eat(String something);}package cn.Work1130.homeWork_03;public class Cat extends Animal {public Cat() {}public Cat(String name, int age, String color) {super(name, age, color);}@Overridepublic void eat(String something) {System.out.println(getAge()+"岁的"+getColor()+"颜色的猫眯着眼睛侧着头吃"+something);}public void catchMouse(){System.out.println("逮老鼠");}}package cn.Work1130.homeWork_03;public class Dog extends Animal {public Dog() {}public Dog(String name, int age, String color) {super(name, age, color);}@Overridepublic void eat(String something) {System.out.println(getAge()+"岁的"+getColor()+"颜色的狗两只前腿死死的抱住"+something+"猛吃");}public void lookHome(){System.out.println("看门");}}package cn.Work1130.homeWork_03;public class Person {private String name;private int age;public Person() {}public Person(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public void keepPet(Animal animal,String something){System.out.println("年龄为"+getAge()+"岁的"+getName()+"养了一只"+animal.getColor()+"颜色的"+animal.getAge()+"岁的宠物");animal.eat(something);}}package cn.Work1130.homeWork_03;public class Demo {public static void main(String[] args) {Person p = new Person("小王",30);p.keepPet(new Cat("加菲猫",10,"黄"),"🐟");Person p1 = new Person("老李",25);p1.keepPet(new Dog("二郎犬",10,"黑"),"🐖");}}

13

请对下列代码进行补充,打印出接口中的变量num, 随后调用method方法,要求程序与最终运行结果吻合,(注意:打印num变量,不允许创建对象调用)public class Demo4 {/** 请编写程序, 打印出接口中的变量num, 随后调用method方法* 要求程序与最终运行结果吻合*/public static void main(String[] args) {}}interface Inter {int num = 10;void method();}

参考答案

public class Demo implements Inter {/** 请编写程序, 打印出接口中的变量num, 随后调用method方法* 要求程序与最终运行结果吻合*/public static void main(String[] args) {System.out.println(Inter.num);new Demo().method();}@Overridepublic void method() {System.out.println("1");}}interface Inter {int num = 10;void method();}

14.

定义USB接口:(开启功能)(关闭功能)定义笔记本类:(开机功能)(关机功能)(定义使用USB设备的功能,要求:既能使用鼠标也能使用键盘,使用USB功能内部调用开启和关闭功能)定义鼠标类:要符合USB接口定义键盘类:要符合USB接口定义测试类:创建电脑对象,依次调用开机方法,使用USB设备, 关机方法运行结果:笔记本开机连接鼠标的USB断开鼠标的USB连接键盘的USB断开键盘的USB笔记本关机

参考答案

package cn.Work1130.hooong_05;public interface USB {void open();void close();}package cn.Work1130.hooong_05;public class Jotter {public void starting(){System.out.println("电脑开机");}public void shutDown(){System.out.println("电脑关机");}public USB Usb(USB usb){return usb;}}package cn.Work1130.hooong_05;public class Keyboard implements USB {@Overridepublic void open() {System.out.println("键盘打开");}@Overridepublic void close() {System.out.println("键盘关闭");}}package cn.Work1130.hooong_05;public class Mouse implements USB {@Overridepublic void open() {System.out.println("鼠标打开");}@Overridepublic void close() {System.out.println("鼠标关闭");}}package cn.Work1130.hooong_05;public class Demo {public static void main(String[] args) {Jotter jotter = new Jotter();jotter.starting();USB usb = jotter.Usb(new Mouse());usb.open();usb.close();USB usb1 = jotter.Usb(new Keyboard());usb1.open();usb1.close();jotter.shutDown();}}

15.

定义动物类 属性:年龄行为:喝水,吃东西【吃什么不确定】定义游泳接口: 行为:游泳方法定义狗类 行为:吃饭(啃骨头)和 游泳(狗刨)定义羊类: 行为:吃饭(羊啃草)定义青蛙类: 行为:吃饭(吃虫子)和 游泳(蛙泳)定义饲养员类: 行为:饲养动物:包括吃饭和喝水定义测试类: 创建饲养员对象,饲养员调用三次饲养方法:饲养狗,饲养羊,饲养青蛙要求:1. 子类重写父类中的吃东西方法2. 要求给狗和青蛙添加游泳的方法(实现游泳接口)3. 饲养员类中定义一个方法,传入动物类对象(父类),4. 调用吃饭方法,如果有游泳方法也需进行测试运行结果:喝水狗啃骨头狗会狗刨游泳喝水青蛙吃小虫青蛙会蛙泳喝水羊啃草

参考答案

package cn.Work1130.homeWork_06;public interface Swim {void swin();}package cn.Work1130.homeWork_06;public abstract class Animal {private String name;private int age;public Animal() {}public Animal(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public void He(){System.out.println("喝水");}public abstract void eat();}package cn.Work1130.homeWork_06;public class Dog extends Animal implements Swim{public Dog() {}public Dog(String name, int age) {super(name, age);}@Overridepublic void eat() {System.out.println("狗吃米田共");}@Overridepublic void swin() {System.out.println("狗刨");}}package cn.Work1130.homeWork_06;public class Sheep extends Animal{public Sheep() {}public Sheep(String name, int age) {super(name, age);}@Overridepublic void eat() {System.out.println("羊吃草");}}package cn.Work1130.homeWork_06;public class Frog extends Animal implements Swim{public Frog() {}public Frog(String name, int age) {super(name, age);}@Overridepublic void eat() {System.out.println("吃虫子");}@Overridepublic void swin() {System.out.println("仰泳");}}package cn.Work1130.homeWork_06;public class Feeder {public Animal feeder(Animal animal){return animal;}}public class Demo {public static void main(String[] args) {Feeder f = new Feeder();Dog a= (Dog) f.feeder(new Dog("小黑",10));a.He();a.eat();a.swin();Sheep s=(Sheep)f.feeder(new Sheep("小白",2));s.He();s.eat();Frog F=(Frog) f.feeder(new Frog("小青",4));F.He();F.eat();F.swin();}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。