大一 JAVAOOP-T4 抽象类和接口-实践任务指南(美和易思)

大一 JAVAOOP-T4 抽象类和接口-实践任务指南(美和易思)

训练目标:
1.抽象类设计
2.Final 修饰符的使用
3.接口设计
4.通过接口设计实现模拟动物的吼叫声

1. 学生实践练习
需求说明
不同的动物都有进食的行为,但是在进食前需要捕获到食物后才可以进食,要求定义一个抽
象的动物类,该类中有一个抽象的捕食方法,和一个非抽象的进食方法,在进食方法中调用
捕食方法。定义 3 个不同的动物类,分别是虎、猴、狼,这些类继承抽象的动物类。
每种动物具有相同的进食行为,即将食物嚼碎后咽下,但动物具有不同的捕食行为。最终控
制输出每种动物的进食结果。程序运行结果如图 4.3 所示。
在这里插入图片描述
实现思路
(1)创建 3 个动物类,分别是老虎(Tigger)类、猴子(Monkey)类和狼(Wolf)类,定
义动物抽象父类,在该类中定义捕食抽象方法(predation)和非抽象方法进食(eat)方法,
在该方法中调用捕食方法。所有的动物类都继承 Animal 类,在各自的子类中重写 predation()
方法,在方法中输出如何捕食。
(2)创建测试类 Test,在该类中定义程序入口方法 main,在该方法中创建不同的动物对象,
并调用各自对象的 eat()方法。

public abstract class Animal {
	//定义捕食抽象方法
	public abstract void predation();
	//定义非抽象进食方法
	public void eat(){
		System.out.println("吃肉进肚子");
		}
	}

public class Tigger extends Animal {

	
	public void predation() {
		System.out.println("老虎捕食");
	}


}

public class Monkey extends Animal{
	public void predation() {
		System.out.println("猴子捕食");
	}
}

public class Wolf extends Animal{
	public void predation() {
		System.out.println("狼王捕食");
	}
}
public class Test {
public static void main(String[] args) {
	Animal tigger = new Tigger();
	tigger.predation();
	tigger.eat();
	Animal monkey = new Monkey();
	monkey.predation();
	monkey.eat();
	Animal wolf = new Wolf();
	wolf.predation();
	wolf.eat();
}
}

2.学生实践练习
需求说明
创建一个数学工具(MathUtils)类,将该类设计为最终类,该类的构造方法定义成私有访
问权限,防止外界实例化该类。在类定义静态 double 类型常量π,其值为 3.14159268,定
义静态方法 addition(),该方法用于计算一个 int[]类型的数组中所有元素的和。定义静态
方法 circ(),用于计算圆形的周长。定义静态方法 sort,该方法用于对传入的 int[]数组
进行升序排序。通过使用该数学工具类的不同方法,实现不同的操作,程序运行结果如图
在这里插入图片描述

实现思路
(1)创建 MathUtils 类,该类可作为一个常用的数学工具类,其中包括静态常量π,π值
为 3.14159268,静态方法 addition(int[] data),该方法用于计算传入数组的各元素和,
静态方法 cicr(double r),该方法用于计算传入半径长度的圆周长,静态方法 sort(int[]
data),该方法将传入的数组进行升序排序。
(2)创建测试类 MathUtils,在该类的入口(main)方法中,使用 MathUtils 类完成图 4.8
输出内容的相关操作。

import java.util.Arrays;
 
public final class MathUtils {
	final static double π = 3.14159268;
	public static final String PI = null;
	//构造方法定义成私有访问权限
	private MathUtils() {
		
	} 
	//计算数组元素的和
	public final static void addition(int[] data) {
		int sum = 0;
		for (int i = 0; i < data.length; i++) {
			sum += data[i];
		}
		System.out.println("data数组各元素和="+sum);
	}
	//计算圆形的周长
	public final static void circ(double r) {
		double perimeter = 2*π*r;
		System.out.printf("半径为%f的园的周长是%f\n",π,perimeter);
	}
	//对数组进行排序
	public final static void sort(int[] data) {
		System.out.println("data数组排序前的结果:");
		for (int i = 0; i < data.length; i++) {
			System.out.print(data[i]+"\t");
		}
		System.out.println();
		System.out.println("data数组排序后的结果:");
		for (int i = 0; i < data.length; i++) {
			Arrays.sort(data);
			System.out.print(data[i]+"\t");
		}
	}
	
}
public class MathUtilsTest {
public static void main(String[] args) {
	int[] data = new int[] {5,7,1,3,2,4,8,9,6};
	System.out.println("π的值:"+MathUtils.PI);
	MathUtils.addition(data);
	MathUtils.circ(2);
	MathUtils.sort(data);
}
}

3.学生实践练习

需求说明
通过接口摸拟麦当劳食物生产过程,程序运行结果如图所示
实现思路
(1)创建食物(Food)接口,该接口被所有的食物类所实现。在该接口中定义 getFood()方
法。
(2)创建麦香鸡(McChicken)类,该类实现 Food 接口,并重写 Food 接口的 getFood()方
法。
(3)创建薯条(Chips)类,该类实现 Food 接口,并重写 Food 接口的 getFood()方法。
(4)创建生产食品的工厂类(FoodFactory),在该类中定义静态方法 createFood(String
type)方法,在该方法中通过传入该方法参数的字符串值,判断用户需要何种食物,如果工
厂中有该食物,则创建该食物对象,否则给出友好提示信息

public class Chips implements Food{

	public void getFood() {
		System.out.println("薯条");
	}
	
}

public class Client {
	public static void main(String[] args) {
		//通过食物工厂创建食物
		Food mcchicken = FoodFactory.createFood("mcchicken");
		mcchicken.getFood();
		Food chips = FoodFactory.createFood("chips");
		chips.getFood();
	}

}

public interface Food {
   public  void getFood();
}

public class FoodFactory {
	public static Food createFood(String type){
		 //通过传递的字符串参数判断用户需要的食物
		 if(type.equals("mcchicken")) {
			 //如果条件满足则创建对象的食物对象
			 return new McChicken();
		 }else if(type.equals("chips")) {
			 return new Chips();
		 } else {
			 System.out.println("对不起没有该食物!");
			 return null;
		 }
	 }
}
public class McChicken implements Food {

	public void getFood() {
		System.out.println("麦香鸡");
	}

}

4.学生实践练习
需求说明
通过接口定义,编写一个程序,实现模拟动物的吼叫声。

public class Dog  implements IAnimal{
	//狗实现吼叫接口
	public void sing() {
	System.out.println("汪汪汪");
	}

}
public interface IAnimal {
	//动物吼叫接口
	 public abstract void sing(); 
}
public class Tiger implements IAnimal {
	//老虎实现吼叫接口
	public void sing() {
	 System.out.println("傲傲傲");
	}
}
import com.t43.IAnimal;

public class Business {
	//定义了一个IAnimal的接口变量
	 private IAnimal animal;

	 public void sing(){
	 animal.sing();
}
	 
	//通过setAnimal方法, 初始化动物对象。
	 public void setAnimal(IAnimal animal) {
	 this.animal = animal;
	 }  
}

import com.t43.Dog;

public class Testsing {
	public static void main(String[] args) {
		Business business = new Business();
		//business.setAnimal(new Dog());
		business.setAnimal(new Dog());
		business.sing();
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

枫叶_lin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值