题目排序(点击直达)
- 第一题
- 第二题
- 第三题
- 第四题
- 第五题
- 第六题
- 第七题
- 第八题
- 免责声明
第一题
写出下列程序的运行结果:
package com.cxl.ch5.demo5;
public class Base {int m=0;public int getM(){return m;}
}
package com.cxl.ch5.demo5;public class Sub extends Base{int m=1;public int getM(){return m;}
}
package com.cxl.ch5.demo5;
public class MyTest {public static void main(String[] args) {Sub sub=new Sub();System.out.println(sub.m);System.out.println(sub.getM());}
}
运行结果:
1
1
第二题
仔细阅读下列程序,写出程序的运行结果。
public class Man {void drink(){System.out.println("drink water");}
}
class OldMan extends Man{void drink(){System.out.println("drink tea");}
}
class YoungMan extends Man{void drink(){System.out.println("drink beer");}void dance(){System.out.println("can dance");}
}
public class ManTest {public static void main(String[] args) {Man tom=new Man();Man jack=new YoungMan();Man mary=new OldMan();tom.drink();jack.drink();mary.drink();if(jack instanceof YoungMan){((YoungMan)jack).dance();}}
}
运行结果:
drink water
drink beer
drink tea
can dance
第三题
写出下列程序的输出结果。
package com.cxl.ch5.demo3;
public abstract class LivingThings {public abstract String feature();
}
package com.cxl.ch5.demo3;public class Animal extends LivingThings {String mouth;public Animal() {}public Animal(String mouth) {this.mouth = mouth;}@Overridepublic String feature() {return mouth;}
}
package com.cxl.ch5.demo3;
public class Plant extends LivingThings {String leaf;public Plant() {}public Plant(String leaf) {this.leaf = leaf;}@Overridepublic String feature() {return leaf;}
}
package com.cxl.ch5.demo3;
public class Example {public static void main(String[] args) {Animal animal=new Animal("嘴巴");System.out.println(animal.feature());Plant plant=new Plant("叶子");System.out.println(plant.feature());}
}
运行结果:
嘴巴
竹子
第四题
编程体,设计一个动物声音“模拟器”,希望模拟器可以模拟许多动物的叫声,要求如下。
1)编写抽象类Animal
Animal抽象类有2个抽象方法cry()和getAnimalName(),即要求各种具体的动物给出自己的叫声和种类名称。
2)编写模拟器类Simulator
该类有一个playSound(Animal animal)方法,该方法的参数是Animal类型。即参数animal可以调用Animal的子类重写的cry方法播放具体动物的声音,调用子类重写的getAnimalName()方法显示动物种类的名称。
3)编写Animal类的子类:Dog和cat类
4)编写主类Application,
在主类Application的main方法中至少包含如下代码。
Simulator simulator=new Simulator();
Simulator.playSound(new Dog());
Simulator.playSound(new Cat());
Animal.java 文件
package cn.fjsay.java.demo4;
public abstract class Animal {public abstract void cry();public abstract String getAnimalName();
}
Cat.java 文件
package cn.fjsay.java.demo4;
class Cat extends Animal {@Overridepublic void cry() {System.out.println("Cat meows");}@Overridepublic String getAnimalName() {return "Cat";}
}
Dog.java文件
package cn.fjsay.java.demo4;class Dog extends Animal {@Overridepublic void cry() {System.out.println("Dog barks");}@Overridepublic String getAnimalName() {return "Dog";}
}
Simulator.java 文件
package cn.fjsay.java.demo4;class Simulator {public void playSound(Animal animal) {animal.cry();System.out.println("Animal type: " + animal.getAnimalName());}
}
Test.java 文件
package cn.fjsay.java.demo4;public class Test {public static void main(String[] args) {Simulator simulator = new Simulator();simulator.playSound(new Dog());simulator.playSound(new Cat());}
}
运行结果:
Dog barks
Animal type: Dog
Cat meows
Animal type: Cat
第五题
面向抽象的编程,实现面向对象的设计原则“开闭原则”。
1定义手机类,包含有手机卡。手机与卡是关联关系,手机关联一个抽象的卡类,使得手机可以换卡,
2定义抽象的卡类SIM,该抽象类有3个抽象方法,即 getNumber(),setNumber()和getCorpName()。
3定义移动卡是抽象卡的子类,在子类中重写父类的所有抽象方法。
4定义联通卡是抽象类的子类,在子类中重写父类的所有抽象方法。
5定义一个主类,在主类的主方法中实例化一个手机,手机使用的是移动卡,电话号码是1825678956。
由于资费高,后此手机又换了联通卡,电话号码是13256891478。
CmSimCard.java文件
package cn.fjsay.java.demo5;public class CmSimCard extends SimCard {private String number;@Overridepublic String getNumber() {return number;}@Overridepublic void setNumber(String number) {this.number = number;}@Overridepublic String getCorpName() {return "移动卡";}
}
CuSimCard.java文件
package cn.fjsay.java.demo5;public class CuSimCard extends SimCard{private String number;@Overridepublic String getNumber() {return number;}@Overridepublic void setNumber(String number) {this.number = number;}@Overridepublic String getCorpName() {return "联通卡";}
}
Phone.java文件
package cn.fjsay.java.demo5;public class Phone {private SimCard simCard;public void changeSimCard(SimCard newSimCard) {simCard = newSimCard;}public void makeCall() {String number = simCard.getNumber();System.out.println("手机使用的是移动卡" + simCard.getCorpName() + "电话号码是" + number);}
}
SimCard.java文件
package cn.fjsay.java.demo5;public abstract class SimCard {public abstract String getNumber();public abstract void setNumber(String number);public abstract String getCorpName();
}
Test.java 文件
package cn.fjsay.java.demo5;public class Test {public static void main(String[] args) {Phone p = new Phone();SimCard m = new CuSimCard();m.setNumber("1825678956");p.changeSimCard(m);p.makeCall();SimCard cu = new CuSimCard();cu.setNumber("13256891478");p.changeSimCard(cu);p.makeCall();}
}
运行结果:
手机使用的是移动卡联通卡电话号码是1825678956
手机使用的是移动卡联通卡电话号码是13256891478
第六题
编程题,创建一个含有指向某对象的空白final引用的类,在所有构造方法内部都执行空白final的初始化动作,说明Java确保final在使用前必须被初始化,且一旦被初始化即无法改变。下列程序给出了部分代码。请补充完成。
class Poppet{int i;Poppet(){}Poppet(int i){this.i=i;}
}
public class BlankFinal {final Poppet poppet;
}
BlankFinal.java
package cn.fjsay.java.demo6;public class BlankFinal {final Poppet poppet;public BlankFinal() {poppet = new Poppet(); // 在构造方法中初始化空白final引用}public BlankFinal(int i) {poppet = new Poppet(i); // 在构造方法中初始化空白final引用}
}
Poppet.java文件
package cn.fjsay.java.demo6;public class Poppet {int i;Poppet() {}Poppet(int i) {this.i = i;}
}
Test.java 文件
package cn.fjsay.java.demo6;public class Test {public static void main(String[] args) {BlankFinal blankFinal1 = new BlankFinal();BlankFinal blankFinal2 = new BlankFinal(10);System.out.println(blankFinal1.poppet.i);System.out.println(blankFinal2.poppet.i);}
}
运行结果:
0
10
第七题
多态性编程题。1动物Animal可以发出叫声,void cry(){}
2子类猫Cat重写父类的cry方法,发出喵喵的叫声。
3子类Dog重写父类的cry方法,发出汪汪的叫声。
4在测试类的主方法中,编写多态的代码,父类的对象指向不同的子类实体。上转型对象调用子类重写的方法。运行期后期动态绑定方法。
Animal.java 文件
package cn.fjsay.java.demo7;public class Animal {public void cry() {System.out.println("Animal is crying");}
}
Cat.java 文件
package cn.fjsay.java.demo7;public class Cat extends Animal {@Overridepublic void cry() {System.out.println("The cat is meowing");}
}
Dog.java文件
package cn.fjsay.java.demo7;public class Dog extends Animal {@Overridepublic void cry() {System.out.println("The dog is barking");}
}
Test.java 文件
package cn.fjsay.java.demo7;public class Test {public static void main(String[] args) {Animal a1 = new Cat();Animal a2 = new Dog();a1.cry();a2.cry();}
}
运行结果“
The cat is meowing
The dog is barking
第八题
多态性编程题。
1定义一个抽象的AbstractShap类,类体中定义了抽象的方法double area();void draw();
2编写AbstractShape的子类长方形类,在长方形类中重写父类的所有抽象方法。
3编写AbstractShape的子类圆形类,在圆形类中重写父类的所有抽象方法。
4编写测试类,在主类的主方法中,通过上转型对象调用方法,分别调用子类重写的方法。
AbstractShape.java文件
package cn.fjsay.java.demo8;public abstract class AbstractShape {public abstract double area();public abstract void draw();
}
Circle.java 文件
package cn.fjsay.java.demo8;class Circle extends AbstractShape {private double radius;public Circle(double radius) {this.radius = radius;}@Overridepublic double area() {return Math.PI * radius * radius;}@Overridepublic void draw() {System.out.println("圆形");}
}
Rectangle.java 文件
package cn.fjsay.java.demo8;class Rectangle extends AbstractShape {private double length;private double width;public Rectangle(double length, double width) {this.length = length;this.width = width;}@Overridepublic double area() {return length * width;}@Overridepublic void draw() {System.out.println("长方形");}
}
Test.java文件
package cn.fjsay.java.demo8;public class Test {public static void main(String[] args) {AbstractShape shape1 = new Rectangle(5, 3);AbstractShape shape2 = new Circle(2.5);shape1.draw();System.out.println("面积: " + shape1.area());shape2.draw();System.out.println("面积: " + shape2.area());}
}
运行结果:
长方形
面积: 15.0
圆形
面积: 19.634954084936208
免责声明
本文章所有的图片以及代码等仅作为学习使用,不作为商业目的,如有侵权请联系我删除!
所提供的代码仅供参考,有很多不足请自行补充!