继承

该博客包含多个面向对象编程的示例,包括Animal、Penguin和Dog类的定义及使用,展示了类的继承、构造方法和成员方法。此外,还定义了一个坦克类(TanKe)并实现了toString方法。另外,创建了一个MathTool工具类,提供了数值的绝对值计算和指数运算。最后,设计了Person类,包含了姓名、年龄和性别的属性,以及相应的访问器和修改器方法。每个类都遵循了良好的面向对象设计原则。
摘要由CSDN通过智能技术生成

题目一

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));

    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值