第3章課後作業
第1題 簡述封裝的定義,步驟和好處
答:封裝就是將類的狀態資訊隱藏在類的內部,不允許外部程式直接訪問,而通過該類提供的方法來實現對隱藏資訊的操作和訪問.具體步驟:1,修改類屬性的訪問許可權.2,建立setter(賦值)和getter(取值)的方法.3,在getter中加入對屬性的存取控制語句.封裝的好處就是讓使用者只能通過程式規定的方法來訪問資料,隱藏類的實現細節,方便加入存取控制語句,限制不合理的操作.
第2題 指出程式碼中存在的錯誤,並說明錯誤原因
類Teacher2中的方法不是構造方法,所以下面的main()方法中例項化物件不能傳參,修改方法要麼去掉viod,要麼去掉實參.
第3題 指出程式碼中存在的錯誤,並說明錯誤原因
public int a(String s1,String s2) {} 無return返回
public void a(int i, String s) {}與private void a(int i,String mystring) {}方法名相同,形參的型別和個數都相同
第4題 編寫類Student1和測試類Student1Test
class Student1 {
private String name;
private int avg;
public void setAvg(String name,int avg) {
this.name = name;
this.avg = avg;
}
public void getMeg() {
if(avg>16) {
System.out.println("我的名字是:"+name+"年齡是:"+avg);
}else {
System.out.println("年齡不達標");
}
}
}
import java.util.Scanner;
public class Student1Test{
public static void main(String[] args) {
Student1 s1 = new Student1();
Scanner in = new Scanner(System.in);
System.out.print("請輸入姓名:");
String name = in.next();
System.out.print("請輸入年齡:");
int avg = in.nextInt();
s1.setAvg(name, avg);
s1.getMeg();
}
}
第5題 編寫類Student2和測試類Student2Test
class Student2 {
private String name;
private int avg;
private String sex;
private String subject;
public Student2(String name,int avg) {
this.name = name;
this.avg = avg;
this.sex = "男";
this.subject = "Java";
}
public Student2(String name,int avg,String sex,String subject) {
this.name = name;
this.avg = avg;
this.sex = sex;
this.subject = subject;
}
public void show() {
System.out.println("我的名字叫"+name+",今年"+avg+"歲,性別是"+sex+",學習的專業是:"+subject);
}
}
import java.util.Scanner;
public class Student2Test {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("請輸入姓名:");
String name = in.next();
System.out.print("請輸入年齡:");
int avg = in.nextInt();
Student2 s2 =new Student2(name, avg);
s2.show();
System.out.print("請輸入姓名:");
String name1 = in.next();
System.out.print("請輸入年齡:");
int avg1 = in.nextInt();
System.out.print("請輸入性別:");
String sex = in.next();
System.out.print("請輸入專業:");
String subject = in.next();
Student2 s3 =new Student2(name1, avg1, sex, subject);
s3.show();
}
}