1.简述重载(Overload)与重写(Override)的区别。
从单词上讲:重载是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();
}
}
测试结果: