1. 简述重载(Overload)与重写/覆盖(Override)的区别。
参数列表——方法重写要求必须一致,方法重载要求必须不一致。
返回类型——方法重写要求必须一致(或为其子类型),方法重载无要求。
方法——方法重写只能用于子类重写父类的方法,方法重载用于同一个类中所有的方法。
访问权限与抛出的异常——方法重写有特殊的要求,方法重载无任何限制。
次数——父类的一个方法只能被子类重写一次,一个方法可以在所有的类中可以被重载多次。
多态——方法重写是运行时多态,方法重载是编译时多态。
2. 完成刺客刺杀总统的场景,要求:刺杀成功后,将刺客的名字和总统的名字都显示出来。
package assassination;
public class Assassin {
String name;
public Assassin(String n) {
name = n;
}
public void assassinatePresident(President president) {
System.out.println("一名叫" + name + "的刺客杀死了" + president.name + "的总统!");
}
}
package assassination;
public class President {
String name;
public President(String n) {
name = n;
}
}
package assassination;
public class TestAssassinate {
public static void main(String[] args) {
President president = new President("Lincoln");
Assassin assassin = new Assassin("John");
assassin.assassinatePresident(president);
}
}
3. 建立一个长方形的类 包括属性,长、宽。
1)在构造方法中,给长方形的属性初始化。
2)写两个方法,分别求出长方形的周长和面积。
3)写一个方法,以长方形的对象为参数,求出两个长方形的周长差。
package rectangle;
public class Rectangle {
double length, width;
public Rectangle(double length, double width) {
this.length = length;
this.width = width;
}
public double area() {
double area = width * length;
System.out.println("长方形的面积为" + area);
return area;
}
public double perimeter() {
double perimeter = 2 * (width + length);
System.out.println("长方形的周长为" + perimeter);
return perimeter;
}
public static void main(String[] args) {
Rectangle r = new Rectangle(6, 5);
r.area();
r.perimeter();
Rectangle r1 = new Rectangle(6, 5);
Rectangle r2 = new Rectangle(8, 7);
double differ = Math.abs(r1.perimeter() - r2.perimeter());
System.out.println("两个长方形的周长差为" + differ);
}
}
4. 创建拥有继承结构的两个类,两个类拥有相同定义的show()方法,但是方法体中的内容不同,分别创建一个父类对象和子类对象,分别调用show()方法,观察结果。
package inherit;
public class Father {
public String show() {
System.out.println("Father父类的show()方法");
return "此为父类中的方法。";
}
}
package inherit;
public class Father {
public String show() {
System.out.println("Father父类的show()方法");
return "此为父类中的方法。";
}
}
package inherit;
public class TestOverride {
public static void main(String[] args) {
Son son = new Son();
son.show();
Father father = new Father();
father.show();
}
}
Copyright © 2017 Jin Hanquan. All rights reserved.