JavaDay06--Homework(方法重载和重写的区别,构造方法,继承类)

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.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值