题目一
1、需求说明
2、需求分析
3、需求类图
4、继承关系图
解答:
package cn.java.extend;
public class Animal {
protected String name;
protected Integer health;
protected Integer love;
public Animal() {
System.out.println("Animal....无参构造方法");
}
public Animal(String aName) {
System.out.println("Animal....有参构造方法");
}
public void animalTest() {
System.out.println("Animal....animalTest()");
}
public String getName() {
return name;
}
public Integer getHealth() {
return health;
}
public Integer getLove() {
return love;
}
public void print() {
System.out.println("Pet [name=" + name + ", health=" + health + ", love=" + love + "]");
}
}
package cn.java.extend;
public class Penguin extends Animal{
private String sex;
public Penguin() {
super();
}
public String getSex() {
return sex;
}
public void print() {
System.out.println("Penguin [name=" + super.name + ", love=" + super.love + ",health=" + super.health + ", sex=" + this.sex + "]");
}
}
package cn.java.extend;
public class Dog extends Animal{
private String strain;
public String getStrain() {
return strain;
}
public Dog() {
super();
System.out.println("Dog....无参构造方法");
}
public void dogTest() {
super.animalTest();
}
public void print() {
System.out.println("Dog [name=" + super.name + ", love=" + super.love + ",health=" + super.health + ", strain=" + this.strain + "]");
}
}
package cn.java.extend;
public class Demo {
public static void main(String[] args) {
Dog dog1 = new Dog();
dog1.dogTest();
dog1.print();
}
}
题目二
定义一个坦克类(Tanke),类中有属性x(x坐标,int),y(y坐标,int),width(宽度,int)、height(高度,int)
要求:属性全部私有、提供访问器与修改器、提供无参构造器与有参构造器、提供toString
package cn.java.homework;
public class TanKe {
private Integer x;// 坦克移动的x坐标
private Integer y;// 坦克移动的y坐标
private Integer width;// 坦克素材的宽度
private Integer height;// 坦克素材的高度
public Integer getX() {// 访问器
return x;
}
public void setX(Integer x) {// 修改器
this.x = x;
}
public Integer getY() {
return y;
}
public void setY(Integer y) {
this.y = y;
}
public Integer getWidth() {
return width;
}
public void setWidth(Integer width) {
this.width = width;
}
public Integer getHeight() {
return height;
}
public void setHeight(Integer height) {
this.height = height;
}
// 无参构造器
public TanKe() {
super();// 调用的是Object类中的无参构造方法
}
// 有参构造器
public TanKe(Integer x, Integer y, Integer width, Integer height) {
super();// 调用的是Object类中的无参构造方法
this.x = x;
this.y = y;
this.width = width;
this.height = height;
}
public String toString() {
return "TanKe [x=" + x + ", y=" + y + ", width=" + width + ", height=" + height + "]";
}
}
显式来看,坦克类没有父类,但有super();
因为默认隐式继承于java.lang包下的Object类(顶级)。
package cn.java.homework;
public class Test {
public static void main(String[] args) {
TanKe tk1 = new TanKe();
tk1.setX(20);// 修改器
Integer x = tk1.getX();// tk1.x 访问器
System.out.println(x);
}
}
题目三
书写一个数学工具类(MathTool),工具类中的方法如下:
(1)、abs():接收一个数值类型变量(类型可能为int、double、float、long),返回其绝对值。提示:方法重载
(2)、pow(int n,int m):计算n的m次方,返回最终结果。
(3)、sort():接收一个数组(int数组),将此数组由小到到排列,然后返回结果。
package cn.java.homework;
public final class MathTool {// 终结类,不能被任何类继承
public static int abs(int num) {
return num >= 0 ? num : -num;
}
public static float abs(float num) {
return num >= 0 ? num : -num;
}
public static double abs(double num) {
return num >= 0 ? num : -num;
}
}
题目四
有个类名字为Person,用来描述人。这个类共有的特征有:姓名(name)、年龄(age)、性别(gengder);共有的行为有睡觉(sleep)、吃饭(eat)。
要求:
1、使用合适的数据类型、合适的修饰符来定义这些属性,并且分别写出这些属性的访问器方法和修改器方法
2、写出Person这个类的无参构造方法
3、写出Person这个类的有参构造方法(要求判断年龄在1~150岁之间,当不在这个范围内时,给年龄赋值一个默认值20,并且给一个提示信息)
4、写出睡觉、吃饭行为的方法,自己定义合适的形参和返回值类型
package cn.java.demo;
public class Person {
private String name;// 姓名
private Integer age;// 年龄
private String gender;// 性别
// 无参构造
public Person() {
super();
System.out.println("Person...无参构造方法");
}
// 有参构造方法
public Person(String name, Integer age, String gender) {
super();
this.name = name;
// 判断年龄是否在1~150之间
if (age >= 1 && age <= 150) {// 满足要求
this.age = age;
} else {
this.age = 20;
System.out.println("亲,您输入的年龄不符合要求。系统已为您设置一个默认值20岁");
}
this.gender = gender;
}
// 方法
public void sleep() {
System.out.println("" + this.name + "正在睡觉");
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
if (age >= 1 && age <= 150) {// 满足要求
this.age = age;
} else {
this.age = 20;
System.out.println("亲,您输入的年龄不符合要求。系统已为您设置一个默认值20岁");
}
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + ", gender=" + gender + "]";
}
}
package cn.java.demo;
public class Test {
public static void main(String[] args) {
Person person = new Person("李四", 20, "男");
person.setAge(-20);
System.out.println(person);
person.sleep();
}
}
题目五
有一个水果基类(Fruit),属性有水果名称(name)、形状(shape)、水果价格(price)。其中的方法有:showDesc(),用来描述水果的信息
要求:定义两个子类Apple和Orange,Apple中有自己特有的属性:color(颜色);Orange有自己特有的属性:taste(味道)
package cn.java.demo2;
public class Fruit {
protected String name;// 水果名称
protected String shape;// 水果的形状
protected Float price;// 水果价格
public void showDesc() {// 打印水果信息
System.out.println("名字=" + this.name + ",形状=" + this.shape + ",价格=" + this.price);
}
public String getName() {
return name;
}
public String getShape() {
return shape;
}
public Float getPrice() {
return price;
}
}
package cn.java.demo2;
public class Apple extends Fruit {
private String color;// 苹果颜色
public String getColor() {
return color;
}
public Apple() {
}
public Apple(String name, String shape, Float price, String color) {
this.color = color;
super.name = name;
super.price = price;
super.shape = shape;
}
@Override
public String toString() {
return "Apple [color=" + this.color + ", name=" + super.name + ", shape=" + super.shape + ", price="
+ super.price + "]";
}
}
package cn.java.demo2;
public class Test {
public String gender;// 实例成员变量
public static String age;// 静态成员变量
public void bbb() {// 实例方法
}
public static void aaa() {// 静态方法
}
public static void main(String[] args) {
Test.aaa();
double PI = Math.PI;
System.out.println(String.format("%.2f", PI));
}
}