大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

Java教程
Java標識符與關鍵字
Java變量
Java數據類型
Java運算符
Java控制語句
Java方法
Java面向對象
Java對象的創建和使用
Java封裝
Java中static和this
Java繼承
Java方法覆蓋和多態
Java super
Java基礎練習題

Java基礎編程練習題

十、 Java封裝練習題

● 定義“人”類,“人”類包括這些屬性:姓名、性別、年齡等。使用封裝的方式編寫程序,要求對年齡進行安全控制,合法的年齡范圍為[0~100],其他值表示不合法。

public class People {
	private String name;
	private boolean sex;
	private int age;
	public String getName() {
		return name;
	}
	public void setName(String _name) {
		name = _name;
	}
	public boolean isSex() {
		return sex;
	}
	public void setSex(boolean _sex) {
		sex = _sex;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int _age) {
		if(_age < 0 || _age > 100){
			throw new RuntimeException("年齡不合法!");
		}
		age = _age;
	}
}
public class PeopleTest {
	public static void main(String[] args) {
		People p = new People();
		p.setName("張三");
		p.setAge(20);
		p.setSex(true);
		
		System.out.println("姓名 = " + p.getName());
		System.out.println("性別 = " + (p.isSex() ? "男" : "女"));
		System.out.println("年齡 = " + p.getAge());
		
		p.setAge(-100);
	}
}
執行結果如下圖所示:

Java開發

十一、 this和static關鍵字練習題

● 選擇題(B)

public class Test {
	static int value = 9;
	public static void main(String[] args) throws Exception{
		new Test().printValue();
	}
	public void printValue(){
		int value = 69;
		System.out.println(this.value);
	}
}
A. 編譯錯誤

B. 打印9

C. 打印69

D. 運行時拋出異常

● 判斷下面代碼的輸出結果,并說明原因

public class User {
	private String name;
	public User(){
	}
	public void setName(String name){
		name = name;
	}
	public String getName(){
		return name;
	}
}
public class UserTest {
	public static void main(String[] args) {
		User user = new User();
		user.setName("zhangsan");
		System.out.println(user.getName());
	}
}
最終的輸出結果是:null

原因:setName方法體當中的name = name是把局部變量name賦值給局部變量name,和實例變量name無關,所以getName()方法獲取的實例變量值是null。

● 找出下面代碼的錯誤,并說明為什么錯了

public class Test {
	int i;
	static int j;
	public void m1(){
		System.out.println(i);
		System.out.println(j);
		m2();
		m3();
	}
	public void m2(){
	}
	public static void m3(){
		System.out.println(i);
		System.out.println(j);
		m2();
		m4();
	}
	public static void m4(){
	}
}
第13,15行編譯報錯,因為靜態方法中無法直接訪問實例變量i和實例方法m2()。

十二、Java繼承練習題

●  定義猴子類,猴子有名字和性別等屬性,并且定義猴子說話的方法,定義人類,人有名字和性別等屬性,并且定義人說話的方法。使用繼承,讓代碼具有復用性。

public class Monkey {
	private String name;
	private boolean sex;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public boolean isSex() {
		return sex;
	}
	public void setSex(boolean sex) {
		this.sex = sex;
	}
	public Monkey() {
		super();
	}
	public Monkey(String name, boolean sex) {
		super();
		this.name = name;
		this.sex = sex;
	}
	public void speak(){
		System.out.println(name + "咿咿呀呀!");
	}
}
public class People extends Monkey{
	public void speak(){
		System.out.println(this.getName() + ",呦,小伙會說話了!");
	}
}
● 定義動物類,動物有名字屬性,并且定義動物移動的方法,定義魚類,魚有名字屬性,有顏色屬性,并且定義魚移動的方法。使用繼承,讓代碼具有復用性。
public class Animal {
	private String name;

	public String getName() {
		return name;
	}

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

	public Animal() {
		super();
	}

	public Animal(String name) {
		super();
		this.name = name;
	}
	
	public void move(){
		System.out.println(name + " is moving!");
	}
}
public class Fish extends Animal{
	public void move(){
		System.out.println(this.getName() + "正在水里歡快的游來游去!");
	}
}
十三、 Java方法覆蓋和多態練習題

● 實現憤怒的小鳥

我們有很多種小鳥,每種小鳥都有飛的行為,還有一個彈弓,彈弓有一個彈射的行為,彈射時把小鳥彈出去,之后小鳥使用自己飛行的行為飛向小豬(不要求編寫小豬的代碼)。不同種類的小鳥有不同飛行的方式:

紅火:紅色小鳥,飛行方式:正常

藍冰:藍色小鳥,飛行方式:分成3個

黃風:黃色小鳥,飛行方式:加速。

//小鳥
public class Bird {
	//飛
	public void fly(){
		
	}
}
public class RedBird extends Bird{
	public void fly(){
		System.out.println("正常的飛翔");
	}
}
public class BlueBird extends Bird{
	public void fly(){
		System.out.println("變成了3只小鳥一起飛");
	}
}
public class YellowBird extends Bird{
	public void fly(){
		System.out.println("加速飛翔");
	}
}
//彈弓
public class Slingshot {
	//射
	public void shot(Bird bird){
		//鳥兒飛
		bird.fly();
	}
}
public class Test {
	public static void main(String[] args) {
		Bird redBird = new RedBird(); 
		Bird blueBird = new BlueBird(); 
		Bird yellowBird = new YellowBird(); 
		Slingshot ss = new Slingshot();
		ss.shot(redBird);
		ss.shot(blueBird);
		ss.shot(yellowBird);
	}
}
執行結果如下圖所示:

Java應用

● 計算不同類型的員工薪資

定義員工類Employee,員工包含姓名name、出生月份birthMonth兩個屬性,員工有獲取指定月份工資的方法(getSalary(int month)),如果該月員工生日,公司補助250元。

定義有固定工資的員工類SalariedEmployee,有月薪monthlySalary屬性。

定義小時工類HourlyEmployee,包含工作小時數hours和每小時的工資hourlySalary屬性,如果每月工作超過160小時,超過的部分按1.5倍工資發放。

定義銷售人員類SalesEmployee,包含月銷售額sales和提成比例comm屬性。

public class Employee {
	private String name;
	private int birthMonth;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getBirthMonth() {
		return birthMonth;
	}
	public void setBirthMonth(int birthMonth) {
		this.birthMonth = birthMonth;
	}
	public double getSalary(int month){
		return 0.0;
	}
}
public class SalariedEmployee extends Employee {
	private double monthlySalary;
	public double getMonthlySalary() {
		return monthlySalary;
	}
	public void setMonthlySalary(double monthlySalary) {
		this.monthlySalary = monthlySalary;
	}
	public double getSalary(int month){
		if(month == this.getBirthMonth()){
			return monthlySalary + 250;
		}
		return monthlySalary;
	}
}
public class HourlyEmployee extends Employee {
	private int hours;
	private double hourlySalary;
	public int getHours() {
		return hours;
	}
	public void setHours(int hours) {
		this.hours = hours;
	}
	public double getHourlySalary() {
		return hourlySalary;
	}
	public void setHourlySalary(double hourlySalary) {
		this.hourlySalary = hourlySalary;
	}
	public double getSalary(int month){
		double money = 0.0;
		if(hours <= 160){
			money = hourlySalary * hours;
		}else{
			money = hourlySalary * 160 + hourlySalary * (hours - 160) * 1.5;
		}
		if(month == this.getBirthMonth()){
			money += 250;
		}
		return money;
	}
}
public class SalesEmployee extends Employee {
	private double sales;
	private double comm;
	public double getSales() {
		return sales;
	}
	public void setSales(double sales) {
		this.sales = sales;
	}
	public double getComm() {
		return comm;
	}
	public void setComm(double comm) {
		this.comm = comm;
	}
	public double getSalary(int month){
		if(month == this.getBirthMonth()){
			return sales * comm + 250;
		}
		return sales * comm;
	}
}
public class Test {
	public static void main(String[] args) {
		SalariedEmployee e1 = new SalariedEmployee();
		e1.setName("張三");
		e1.setBirthMonth(2);
		e1.setMonthlySalary(5000.0);
		System.out.println(e1.getName() + "的2月份工資是" + e1.getSalary(2));
		HourlyEmployee e2 = new HourlyEmployee();
		e2.setName("李四");
		e2.setBirthMonth(2);
		e2.setHourlySalary(50);
		e2.setHours(170);
		System.out.println(e2.getName() + "的2月份工資是" + e2.getSalary(2));
		SalesEmployee e3 = new SalesEmployee();
		e3.setName("王五");
		e3.setBirthMonth(2);
		e3.setSales(10000.0);
		e3.setComm(0.5);
		System.out.println(e3.getName() + "的2月份工資是" + e3.getSalary(2));
	}
}
執行結果如下圖所示:

Java應用

●  某汽車租賃公司有多種汽車可以出租,計算汽車租金

Vehicle是所有車的父類,屬性:品牌、車牌號,有返回總租金的方法:public double getSumRent(int days){}

小轎車類Car是Vehicle的子類,屬性:車型(兩廂、三廂、越野),兩廂每天300,三廂每天350,越野每天500。

多座汽車類Bus是Vehicle的子類,屬性:座位數,座位數<=16的每天400,座位數>16的每天600。

編寫測試類,根據用戶選擇不同的汽車,計算總租金。

public class Vehicle {
	private String brand;
	private String licensePlateNumber;
	public String getBrand() {
		return brand;
	}
	public void setBrand(String brand) {
		this.brand = brand;
	}
	public String getLicensePlateNumber() {
		return licensePlateNumber;
	}
	public void setLicensePlateNumber(String licensePlateNumber) {
		this.licensePlateNumber = licensePlateNumber;
	}
	public Vehicle() {
		super();
	}
	public double getSumRent(int days){
		return 0.0;
	}
}
public class Car extends Vehicle {
	
	//車型:兩廂(300/天)、三廂(350/天)、越野(500/天)
	private String models;

	public String getModels() {
		return models;
	}

	public void setModels(String models) {
		this.models = models;
	}

	public Car() {
		super();
	}
	
	public double getSumRent(int days){
		if("兩廂".equals(models)){
			return 300 * days;
		}else if("三廂".equals(models)){
			return 350 * days;
		}else{
			return 500 * days;
		}
	}
}
public class Bus extends Vehicle {
	//座位數
	private int seats;

	public int getSeats() {
		return seats;
	}

	public void setSeats(int seats) {
		this.seats = seats;
	}

	public Bus() {
		super();
	}
	
	public double getSumRent(int days){
		if(seats <= 16){
			return 400 * days;
		}else{
			return 600 * days;
		}
	}
}
public class Test {
	public static void main(String[] args) {
		Car c = new Car();
		c.setBrand("寶馬");
		c.setLicensePlateNumber("京A 88888");
		c.setModels("三廂");
		System.out.println("品牌:" + c.getBrand() + ",車牌號:" + c.getLicensePlateNumber() + ",10天總租金:" + c.getSumRent(10));
		
		Bus b = new Bus();
		b.setBrand("海格");
		b.setLicensePlateNumber("京B 88888");
		b.setSeats(60);
		System.out.println("品牌:" + b.getBrand() + ",車牌號:" + b.getLicensePlateNumber() + ",10天總租金:" + b.getSumRent(10));
	}
}
執行結果如下圖所示:

十四、 super關鍵字練習題

● 請判斷以下代碼的輸出結果

public class Text {
	public static int k = 0;
	public static Text t1 = new Text("t1");
	public static Text t2 = new Text("t2");
	public static int i = print("i");
	public static int n = 99;
	public int j = print("j");
	static {
		print("靜態塊");
	}
	public Text(String str) {
		System.out.println((++k) + ":" + str + "   i=" + i + "    n=" + n);
		++i;
		++n;
	}
	public static int print(String str) {
		System.out.println((++k) + ":" + str + "   i=" + i + "    n=" + n);
		++n;
		return ++i;
	}
	public static void main(String args[]) {
		new Text("init");
	}
}
全部教程
主站蜘蛛池模板: 国产综合视频 | 日韩美女强理论片 | 久久精品三级视频 | 国产不卡在线观看 | 亚洲国产人成在线观看 | 香蕉一区二区三区观 | 中文字幕天堂久久精品 | 日日操夜夜爱 | 欧美视频在线观在线看 | 亚洲国产品综合人成综合网站 | 啪啪网站色大全免费 | 欧美色视频日本片高清在线观看 | 欧美日韩亚洲精品一区二区三区 | 夜夜爱夜夜操 | 老太婆性杂交毛片 | 欧美精品亚洲一区二区在线播放 | 离线枕边人在线观看 | 久久精品亚洲日本筱田优 | 九九九九九九伊人 | 在线视频一区二区三区四区 | 欧美成人免费夜夜黄啪啪 | 欧美精品在线观看 | 99中文在线 | 天天操天天干天天摸 | 97国内免费久久久久久久久久 | 在线观看欧美一区 | 久久99精品国产一区二区三区 | 五月婷婷开心中文字幕 | 日日摸狠狠的摸夜夜摸 | 亚洲欧美精品综合中文字幕 | 在线亚洲免费 | 香蕉视频在线免费播放 | 亚洲国产精品久久 | 91精品国产视频 | 在线成人爽a毛片免费软件 在线成人天天鲁夜啪视频 在线成人亚洲 | 最新福利在线 | 老子影院午夜伦不卡不四虎卡 | 国产精品九九久久精品女同 | 欧美日韩高清在线观看 | 成人网欧美亚洲影视图片 | 欧美日日干 |