第三次作业

本文通过三个Java实战案例,展示了方法重载与重写的区别、对象之间的交互及继承的应用。首先介绍了方法重载要求方法名相同而参数列表不同,重写则是在子类中实现父类方法并可能扩展其功能。接着通过刺客刺杀总统的场景演示了对象间如何通过方法传递信息。然后,通过长方形类展示了如何计算几何形状的周长和面积,并比较两个对象的属性差异。最后,通过继承结构展示了父类与子类方法的不同表现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.简述重载(Overload)与重写(Override)的区别。
从单词上讲:重载是Overload,重写是Override
从发生范围讲:方法的重载在同一个类中,方法的重写是子类与父类之间实现的

从方法的要求上讲:方法的重载要求方法名相同,参数列表不同(参数类型、参数个数、参数顺序),对返回值无要求;方法的重写要求子类的方法名与父类相同,参数列表相同,访问修饰符的范围要大于等于父类的,方法体不同。


2.完成刺客刺杀总统的场景,要求:刺杀成功后,将刺客的名字和总统的名字
都显示出来。

刺客类:

package 第三次作业;

//刺客类
public class Assassin {
	
	private String name; //刺客的姓名
	private String weapon; //刺客的武器
	private int aid; //刺客的代号
	
	public Assassin(){
		
	}
	
	//初始化刺客对象
	public Assassin(String name,String weapon,int aid){
		this.name = name;
		this.weapon = weapon;
		this.aid = aid;
	}
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getWeapon() {
		return weapon;
	}
	public void setWeapon(String weapon) {
		this.weapon = weapon;
	}
	//刺杀总统的方法
	public void killPre(President pre){
		
		System.out.println(this.name+"用"+this.weapon+"成功刺杀了总统"+pre.getName());
		
	}
	
	
	
}
总统类:

package 第三次作业;

public class President {
	
	private String name; //总统的名字
	
	public President(){
		
	}
	
	//初始化总统对象
	public President(String name){
		this.name = name;
	}
	
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	
	
	
}

测试类:

package 第三次作业;

import java.util.Scanner;

public class TestAssassin {
	
	public static void main(String[] args) {
		//创建三个刺客对象和一个总统对象
		Assassin a1 = new Assassin("卫庄","鲨齿",1001);
		Assassin a2 = new Assassin("白凤","羽毛",1002);
		Assassin a3 = new Assassin("泰隆","无尽之刃",1003);
		
		President p1 = new President("姬无夜");
		President p2 = new President("嬴政");
		President p3 = new President("赵高");
		
		System.out.println("注:每个刺客功夫有限,只能刺杀唯一一个总统,请谨慎选择!");
		Scanner scan1 = new Scanner(System.in);
		System.out.print("请选择您要使用的刺客(1001-1003):");
		int aid = scan1.nextInt();
		
		switch (aid) {
		case 1001:
			a1.killPre(p1);
			break;
		case 1002:
			a2.killPre(p2);
			break;
		case 1003:
			a3.killPre(p3);
			break;
		default:
			System.out.println("刺杀失败!!!");
			break;
		}
		
		
		
	}
	
}

结果展示:






3.建立一个长方形的类 包括属性,长、宽 
 1) 在构造方法中,给长方形的属性初始化。
 2) 写两个方法,分别求出长方形的周长和面积。
3) 写一个方法,以长方形的对象为参数,求出两个长方形的周长差。

长方形类:

package 第三次作业;

public class Rectangle {
	
	//设置长和宽
	private double length;
	private double width;
	
	//初始化长方形的长和宽
	public Rectangle(double length,double width){
		this.length = length;
		this.width = width;
	}
	
	//求长方形周长
	public double getPeri(double length,double width){
		return (length + width)*2;
	}
	
	//求长方形面积
	public double getArea(double length,double width){
		return length*width;
	}
	
	//求两长方形的周长之差
	public double getPersiSpread(Rectangle r){
		return this.getPeri(this.length, this.width)-r.getPeri(r.length,r.width);
	}
	
	public double getLength() {
		return length;
	}
	public void setLength(double length) {
		this.length = length;
	}
	public double getWidth() {
		return width;
	}
	public void setWidth(double width) {
		this.width = width;
	}
}

测试类:

package 第三次作业;

public class TestRectangle {
	
	public static void main(String[] args) {
		
		Rectangle r1 = new Rectangle(5.0,4.0);
		Rectangle r2 = new Rectangle(9.0, 8.0);
		
		//求出r1的周长和面积
		System.out.println(r1.getPeri(r1.getLength(),r1.getWidth()));
		System.out.println(r1.getArea(r1.getLength(),r1.getWidth()));
		
		//求出长方形r1和r2的周长之差
		System.out.println(r1.getPersiSpread(r2));
	}
	
}

结果展示:



4. 创建拥有继承结构的两个类,两个类拥有相同定义的show()方法,但是方法体中
   的内容不同,分别创建一个父类对象和子类对象,分别调用show()方法,观察结果。

父类方法:

package 第三次作业;

public class Animal {
	
	public void show(){
		System.out.println("动物都吃东西。。。");
	}
	
}

子类方法:

package 第三次作业;

public class Dog extends Animal{
	
	public void show(){
		System.out.println("狗爱吃肉。。。");
	}
	
}

测试类:

package 第三次作业;

public class TestAnimal {
	
	public static void main(String[] args) {
		Animal an = new Animal();
		an.show();
		
		System.out.println("*****************");
		
		Dog d = new Dog();
		d.show();	
	}
	
	
}

测试结果:




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值