類和物件作業及答案
類和物件作業
一、 填空題
- 類是組成Java程式的基本要素,類體有兩部分構成:一部分是變數的定義,另一部分是 的定義。
- 執行Person p = new Person();語句後,將在___________中給Person物件分配空間,並在棧記憶體中給引用變數p分配空間,存放Person物件的引用。
3._______是一種特殊方法,它的名字必須與它所在的類的名字完全相同,並且不書寫返回值型別,在建立物件例項時由new運算子自動呼叫。 - 區域性變數的名字與成員變數的名字相同,若想在該方法內使用成員變數,必須使用關鍵字 。
- 使用關鍵字 來呼叫同類的其它構造方法,優點同樣是以最大限度地程式碼的利用程度 ,減少程式的維護工作量。
- 用關鍵字 修飾的成員變數是類變數,類變數是指不管類建立了多少物件,系統僅在第一次呼叫類的時候為類變數分配記憶體,所有物件共享該類的類變數。
- 使用static修飾的變數稱為靜態變數,靜態變數可以有兩種訪問方式,分別是類名.靜態變數名和_______________________。
- 在一個類檔案中的關鍵字package,import,class出現的可能順序是______________________________。
9.______關鍵字作為Java原始檔的第一條非註釋性語句,指明該原始檔定義的類所有的包。
10._______包是Java語言的核心類庫,它包含了執行Java程式必不可少的系統類,使用該包下的類和介面不需要使用import匯入。
二、 選擇題
-
在Java中,以下程式編譯執行後的輸出結果為( )。(選擇一項)
public class Test {
int x, y;
Test(int x, int y) {//一個帶參構造器
this.x = x;
this.y = y;
}
public static void main(String[] args) {
Test pt1, pt2;
pt1 = new Test(3, 3);
pt2 = new Test(4, 4);
System.out.print( pt1.x+pt2.x);
}
}A 6
B. 34
C. 8
D. 7 -
分析如下Java程式的程式碼所示,則編譯執行後的輸出結果是( )。(選擇一項)
public class Test {
int count=9;
public void count1(){
count=10;
System.out.println(“count1=”+count);
}
public void count2(){
System.out.println(“count2=”+count);
}
public static void main(String[ ] args) {
Test t=new Test();
t.count1();
t.count2();
}
}A count1=9;
count2=9;
B. count1=10;
count2=9;
C. count1=10;
count2=10;
D. count1=9;
count2=10; -
以下語句中關於Java構造方法的說法錯誤的是( )。(選擇一項)
A. 構造方法的作用是為建立物件進行初始化工作,比如給成員變數賦值
B. 一個Java類可以沒有構造方法,只能提供1個構造方法
C. 構造方法與類同名,不能書寫返回值型別
D. 構造方法的第一條語句如果是super(),則可以省略,該語句作用是呼叫父類無引數的構造方法 -
在Java中關於靜態方法,以下說法中正確的是( )。(選擇兩項)
A 靜態方法中不能直接呼叫非靜態方法
B. 非靜態方法中不能直接呼叫靜態方法
C. 靜態方法可以用類名直接呼叫
D. 靜態方法裡可以使用this -
下列選項中關於Java中類方法的說法錯誤的是( )。(選擇二項)
A 在類方法中可用this來呼叫本類的類方法
B. 在類方法中呼叫本類的類方法時可直接呼叫
C. 在類方法中只能呼叫本類中的類方法
D. 在類方法中呼叫例項方法需要先建立物件
三、 判斷題
- 類可以看成一類物件的模板,物件可以看成該類的一個具體例項。( )
- 如果沒有為類中的某些成員賦初始值,Java會為類成員賦予固定的初始值,如數值變數的值為0,布林變數的值為true//false,未初始化的引用為null。( )
- Java中所有的變數,不管是成員變數還是區域性變數,在使用前都必須進行初始化。( )
- 在Java中物件可以賦值,只要使用new關鍵詞呼叫構造器建立該類的一個例項,( )
- System.out.println(“Hello java!”)中out是System類的一個靜態成員變數。( )
- 構造方法用於建立物件,一般不允許有任何返回值,因此需要在構造方法返回型別處標註為void。( )
- Java語言為所有的Java程式自動匯入包“java.lang”,因此Java程式可以直接用“java.lang”中的類和介面。( )
四、 簡答題
- 面向過程和麵向物件的區別。(5分)
- 類和物件的關係
- 構造方法的作用和特徵
- this關鍵字的作用和用法
- 簡述static關鍵字的作用。
提示:從static可以修飾變數,方法,程式碼塊,內部類四個方面來回答。(5分)
五、 編碼題
-
請定義一個交通工具(Vehicle)的類其中有: 屬性: 速度(speed)、 體積(size)等,方法:移動(move())、設定速度(setSpeed(int speed))、加速 speedUp()、減速 speedDown()等。最後在測試類 Vehicle 中的 main()中例項化一個交通工具物件並通過方法給它初始化 speed,size 的值並且通過打印出來。另外呼叫加速、減速的方法對速度進行改變。
-
編寫 Java 程式用於顯示人的姓名和年齡。定義一個人類Person。 該類中應該有兩個【】私有]屬性: 姓名 (name) 和年齡 (age) 。定義構造方法用來初始化資料成員。再定義顯示(display()) 方法將姓名和年齡打印出來。在 main 方法中建立人類的例項然後將資訊顯示。
-
定義一個圓類——Circle,在類的內部提供一個屬性:半徑®,同時 提供 兩個 方 法 : 計算 面積 ( getArea() ) 和 計算 周長(getPerimeter()) 。 通過兩個方法計算圓的周長和麵積並且對計算結果進行輸出。最後定義一個測試類對 Circle 類進行使用。
-
構造方法與過載:定義一個網路使用者類,要處理的資訊有使用者 ID、使用者密碼、 email 地址。在建立類的例項時把以上三個資訊都作為建構函式的引數輸入, 其中使用者 ID 和使用者密碼必須寫,如果email預設時 email地址是使用者 ID 加上字串"@gameschool.com"。
六、 可選題
-
定義一個類 Calculaion, 其中包含四個方法: 加(add()) 、 減(sub()) 、乘(times()) 和除(div()) 。 建立一個具有 main()函式的類。 在 main()函式中建立一個 Calculation 的例項物件並對其中的方法進行呼叫。
-
定義一個類 Draw , 在 類 中 提供 3 個 方法:輸出直角三角形(drawTrian()) 、 輸出矩形(drawRec()) 及平行四邊形(drawPra()) 。通過方法可以輸出由“*” 組成的一個圖形。 同時在類中包含兩個屬性:星號的個數(count) 、行數(lines) 。最後在測試類中進行呼叫。
-
建立一個空調,並呼叫製冷、制熱、通風功能。空調包含的屬性有品牌、匹數、溫度,功能有加熱、製冷、通風等功能。
-
定義一個表示學生資訊的類 Student,要求如下:
(1)類 Student 的屬性如下:
sNO 表示學號; sName 表示姓名; sSex 表示性別; sAge 表示
年齡;sJava:表示 Java 課程成績。
(2)類 Student 帶引數的構造方法:
在構造方法中通過形參完成對成員變數的賦值操作。
(3)類 Student 的方法成員:
getNo():獲得學號;
getName():獲得姓名;
getSex():獲得性別;
getAge()獲得年齡;
getJava():獲得 Java 課程成績
(4) 根據類 Student 的定義,建立五個該類的物件,輸出每個學生的資訊,計算並輸出這五個學生 Java 語言成績的平均值,以及計算並輸出他們 Java 語言成績的最大值和最小值。
類和物件作業答案
一、 填空題
- 方法
- 堆記憶體
- 構造方法
- this
- this
- static
- 物件名.靜態變數名
- package import class
- package
- java.lang
二、 選擇題
- D
- C
- B
- AC
- AC
三、 判斷題
- √
- ×
- ×
- ×
- √
- ×
- √
四、 簡答題
答案略
五、 編碼題
-
請定義一個交通工具(Vehicle)的類其中有: 屬性: 速度(speed)、 體積(size)等,方法:移動(move())、設定速度(setSpeed(int speed))、加速 speedUp()、減速 speedDown()等。最後在測試類 Vehicle 中的 main()中例項化一個交通工具物件並通過方法給它初始化 speed,size 的值並且通過打印出來。另外呼叫加速、減速的方法對速度進行改變。
public class Vehicle {
private int size;
private int speed;
public static void main(String[] args) {
Vehicle ve = new Vehicle();
ve.setSize(10);//設定初始體積
ve.setSpeed(30);//設定初始速度
ve.move();//呼叫移動方法
ve.speedUp();//給交通工具減速
ve.speedDown();//加速}
/** 行進 /
public void move(){
System.out.println("行進中…,速度 "+speed+“km/h” );
}
/* 設定速度 /
public void setSpeed(int speed){
this.speed = speed;
System.out.println(“初始速度設定為:”+speed+" km");
}
/* 設定體積 /
public void setSize(int size){
this.size = size;
System.out.println(“初始體積設定為:”+size+" m^3");
}
/* 加速20 /
public void speedUp(){
this.speed+=20;
System.out.println(“速度增加20後為:”+speed+" km");
}
/* 減速10 */
public void speedDown(){
this.speed-=10;
System.out.println(“減速10後為:”+speed+" km");
}
} -
編寫 Java 程式用於顯示人的姓名和年齡。定義一個人類Person。 該類中應該有兩個私有屬性: 姓名 (name) 和年齡 (age) 。定義構造方法用來初始化資料成員。再定義顯示(display()) 方法將姓名和年齡打印出來。在 main 方法中建立人類的例項然後將資訊顯示。
public class Person {
private String name;
private int age;
/** 在構造器中初始化成員變數 /
public Person(String name,int age){
this.name = name;
this.age = age;
}
public static void main(String[] args) {
Person p = new Person(“張三”,18);
p.display();
}
/* 顯示姓名和年齡 */
public void display(){
System.out.println(“姓名:”+name);
System.out.println(“年齡:”+age);
}
} -
定義一個圓類——Circle,在類的內部提供一個屬性:半徑®,同時 提供 兩個 方 法 : 計算 面積 ( getArea() ) 和 計算 周長(getPerimeter()) 。 通過兩個方法計算圓的周長和麵積並且對計算結果進行輸出。最後定義一個測試類對 Circle 類進行使用。
public class Circle {
private int r;
/** 無參構造 /
public Circle(){}
/* 有參構造,初始化半徑*/
public Circle(int r){
this.r=r;
}
/** 也可以使用setR方法初始化半徑 */
public void setR(int r){
this.r = r;
}
/計算 面積 /
public void getArea(){
double area = Math.PI * r * r;//從Math工具類得到π的值
System.out.println(“圓的面積為:”+area);
}
/ 計算 周長 /
public void getPerimeter(){
double zc = Math.PI * 2 * r;
System.out.println(“圓的周長為:”+zc);
}
}
/ 測試 */
public class Test {
public static void main(String[] args) {
Circle c = new Circle(4);//初始半徑為4,使用構造初始化
c.getArea();
c.getPerimeter();
}
} -
構造方法與過載:定義一個網路使用者類,要處理的資訊有使用者 ID、使用者密碼、 email 地址。在建立類的例項時把以上三個資訊都作為建構函式的引數輸入, 其中使用者 ID 和使用者密碼時必須預設時 email地址是使用者 ID 加上字串"@gameschool.com"。
public class People {
private String id;
private String password;
private String email;
/** 無參構造 */
public People(){}
/** 全參構造 */
public People(String id,String password,String email){
this.id = id;
this.password=password;
this.email = email;
}
public People(String id,String password){
this.id = id;
this.password=password;
this.email=id+"@gameschool.com";
}
public void show() {
System.out.println(“編號:”+this.id);
System.out.println(“密碼:”+this.password);
System.out.println(“郵件:”+this.email);
}
public static void main(String[] args) {
//呼叫全參構造
People p1 = new People(“sxt0001”,“123456”,"[email protected]");
p1.show();
//呼叫無參構造
People p2 = new People(“sxt0002”,“654321”);
p2.show();
}
}
六、 可選題
- 定義一個類 Calculaion, 其中包含四個方法: 加(add()) 、 減(sub()) 、乘(times()) 和除(div()) 。 建立一個具有 main()函式的類。 在 main()函式中建立一個 Calculation 的例項物件並對其中的方法進行呼叫。
public class Calculaion {
private double a;
private double b;
public Calculaion(double a,double b){
this.a=a;
this.b=b;
}
public void add(){
System.out.println(“a加b :”+(a+b));
}
public void sub(){
System.out.println(“a減b :”+(a-b));
}
public void times(){
System.out.println(“a乘b :”+(a*b));
}
public void div(){
System.out.println(“a除以b :”+(a/b));
}
public static void main(String[] args) {
Calculaion c = new Calculaion(7.0,3.0);
c.add();
c.sub();
c.times();
c.div();
}
}
-
定義一個類 Draw , 在 類 中 提供 3 個 方法:輸出直角三角形(drawTrian()) 、 輸出矩形(drawRec()) 及平行四邊形(drawPra()) 。通過方法可以輸出由“*” 組成的一個圖形。 同時在類中包含兩個屬性:星號的個數(count) 、行數(lines) 。最後在測試類中進行呼叫。
public class Draw {
private int count, lines;
public Draw(){}
public Draw(int count, int lines){
this.count=count;
this.lines=lines;
}
/** 直角三角形 /
public void drawTrina() {
for (int i = 0; i < lines; i++) {//共lines行
for (int j = 0; j < i; j++) {//每次增加1
System.out.print("");
}
System.out.println();//換行
}
}
/** 輸出矩形 /
public void drawRec(){
for (int i = 0; i < lines; i++) {
for (int j = 0; j < count; j++) {//每行數量固定
System.out.print("");
}
System.out.println();
}
}
/** 平行四邊形 /
public void drawPra(){
for (int i = 0; i < lines; i++) {
for(int k=0;k<i;k++){
System.out.print(" “);
}
for (int j = 0; j < count; j++) {
System.out.print(”");
}
System.out.println();
}
}
public static void main(String[] args) {
Draw d = new Draw(5,5);
//d.drawTrina();
//d.drawRec();
d.drawPra();
}
} -
建立一個空調,並呼叫製冷、制熱、通風功能。空調包含的屬性有品牌、匹數、溫度,功能有加熱、製冷、通風等功能。
public class AirConditioning {
// 空調屬性
String name;
String pinpai;
String hp;// 匹數
int tempeture;
// 定義製冷行為
void cool() {
tempeture–;
}
// 定義加熱行為
void hot() {
tempeture += 7;
}
//通風功能
void ventilate(){
System.out.println(“空氣通暢,溫度不變”);
}
// 主函式
public static void main(String[] args) {
AirConditioning kt = new AirConditioning();
kt.hp = “2匹”;
kt.tempeture = 20;
kt.pinpai = “格力”;
kt.cool();
System.out.println(“空調的溫度是” + kt.tempeture);
kt.hot();
System.out.println(“空調的溫度是” + kt.tempeture);
kt.ventilate();
}
} -
定義一個表示學生資訊的類 Student,要求如下:
(1)類 Student 的屬性如下:
sNO 表示學號; sName 表示姓名; sSex 表示性別; sAge 表示
年齡;sJava:表示 Java 課程成績。
(2)類 Student 帶引數的構造方法:
在構造方法中通過形參完成對成員變數的賦值操作。
(3)類 Student 的方法成員:
getNo():獲得學號;
getName():獲得姓名;
getSex():獲得性別;
getAge()獲得年齡;getJava():獲得 Java 課程成績
public class Student {
String sNO ;
String sName;
String sSex;
int sAge;
int sJava;
public Student(String sNO, String sName, String sSex, int sAge, int sJava) {
this.sNO = sNO;
this.sName = sName;
this.sSex = sSex;
this.sAge = sAge;
this.sJava = sJava;
}
public String getsNO() {
return sNO;
}
public String getsName() {
return sName;
}
public String getsSex() {
return sSex;
}
public int getsAge() {
return sAge;
}
public int getsJava() {
return sJava;
}
}
(4) 根據類 Student 的定義,建立五個該類的物件,輸出每個學生的資訊,計算並輸出這五個學生 Java 語言成績的平均值,以及計算並輸出他們 Java 語言成績的最大值和最小值。
public class Test {
public static void main(String[] args) {
Student s1 = new Student(“sxt0001”, “張三”, “男”,18,90);
Student s2 = new Student(“sxt0002”, “李四”, “女”,15,92);
Student s3 = new Student(“sxt0003”, “王五”, “男”,17,93);
Student s4 = new Student(“sxt0004”, “趙六”, “男”,21,95);
Student s5 = new Student(“sxt0005”, “錢七”, “男”,19,97);
System.out.println("\t學號\t姓名\t姓別\t年齡\t成績");
System.out.println("\t"+s1.getsNO()+"\t"+s1.getsName()
+"\t"+s1.getsSex()+"\t"+s1.getsAge()+"\t"+s1.getsJava());
System.out.println("\t"+s2.getsNO()+"\t"+s2.getsName()
+"\t"+s2.getsSex()+"\t"+s2.getsAge()+"\t"+s2.getsJava());
System.out.println("\t"+s3.getsNO()+"\t"+s3.getsName()
+"\t"+s3.getsSex()+"\t"+s3.getsAge()+"\t"+s3.getsJava());
System.out.println("\t"+s4.getsNO()+"\t"+s4.getsName()
+"\t"+s4.getsSex()+"\t"+s4.getsAge()+"\t"+s4.getsJava());
System.out.println("\t"+s5.getsNO()+"\t"+s5.getsName()
+"\t"+s5.getsSex()+"\t"+s5.getsAge()+"\t"+s5.getsJava());
int d = (s1.getsJava()+ s2.getsJava()+ s3.getsJava()
+ s4.getsJava()+ s5.getsJava())/5;
System.out.println(“java語言平均成績:”+d);
}
}