Educoder–Java面向對象(第一章)- 類與對象【筆記+參考代碼】

Educoder–Java面向對象(第一章)- 類與對象【筆記+參考代碼】

第一關


編程要求
根據提示,在右側編輯器Begin-End處補充代碼:

聲明一個Dog類,給Dog類添加三個String類型的屬性,分別是name,color,variety,定義兩個方法,分別是,eat,run。

在main方法中創建一個名爲wuhuarou的Dog對象,並設置name爲五花肉,color爲棕色,variety爲阿拉斯加。

使得調用wuhuarou對象的eat方法能輸出啃骨頭,調用run方法能輸出叼着骨頭跑。

具體輸出要求請看測試說明。

測試說明 測試輸入:無

預期輸出:
使用中文冒號

名字:五花肉,毛色:棕色,品種:阿拉斯加

啃骨頭

叼着骨頭跑



參考代碼

package step1;

public class Test {
	public static void main(String[] args) {
		/********** Begin **********/
		//創建Dog對象
		Dog wuhuarou=new Dog();

		//設置Dog對象的屬性
		wuhuarou.name="五花肉";
		wuhuarou.color="棕色";
		wuhuarou.variety="阿拉斯加";
		
		//輸出小狗的屬性
		System.out.println("名字:" +wuhuarou.name+ ",毛色:" +wuhuarou.color+ ",品種:" +wuhuarou.variety);
		
		//調用方法
		wuhuarou.eat();
		wuhuarou.run();
		/********** End **********/
	}
}
//在這裏定義Dog類
/********** Begin **********/
class Dog{
	String name;
	String color;
	String variety;
	void eat(){
		System.out.println("啃骨頭");
	}
	void run(){
		System.out.println("叼着骨頭跑");
	}
}
/********** End **********/



第二關


編程要求
根據提示,在右側編輯器Begin-End處補充代碼:

創建一個Person類,給Person類定義一個無參構造方法和一個有參構造方法,有參構造方法定義兩個String類型參數name和sex在main方法中調用無參構造和有參構造方法;

調用無參構造方法輸出:一個人被創建了;

調用有參構造方法應根據輸入的數據輸出對應的結果,如輸入:張三,男,則輸出:姓名:張三,性別:男,被創建了。


測試說明
測試輸入:張富貴,未知

預期輸出:

一個人被創建了

姓名:張富貴,性別:未知,被創建了



參考代碼

package step2;

import java.util.Scanner;

public class Test {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String name = sc.next();
		String sex = sc.next();
		/********** Begin **********/
		//分別使用兩種構造器來創建Person對象  
		Person a=new Person();
		Person b=new Person(name,sex);
		/********** End **********/
	}
}
//創建Person對象,並創建兩種構造方法
/********** Begin **********/
class Person{
	public Person(){
		System.out.println("一個人被創建了");
	}
	public Person(String name,String sex){
		System.out.println("姓名:"+name+",性別:"+sex+",被創建了");
	}
}
/********** End **********/



第三關


1、下列關於構造方法的說法不正確的是(C)

A、Java語言規定構造方法名必須與類名相同
B、Java語言規定構造方法沒有返回值,且不用void關鍵字聲明
C、構造方法不可以重載
D、構造方法只能用new關鍵字來創建

2.類Test定義如下:

public class Test{
    public float method1(){
        System.out.println("方法1");
        return 1.5;
    }
}

將下列哪些方法插入到第7行是合法的(CD)


A、

public float method1(){  
System.out.println("方法2"); 
return 1.1; 
}

B、

public Test1(){ 
System.out.println("hello");
}

C、

public float method1( int a){ 
System.out.println("方法2");
return a+0.5;
}

D、

public Test(){
System.out.println("hello");
}



第四關


編程要求
右側編輯器中已經編寫好了代碼,但是輸出結果不能讓我們滿意,請根據所學知識修改代碼,使其能輸出如下結果:

name:baby

age:45

sex:女


測試說明
測試輸入:

baby,45,女

預期輸出:

name:baby

age:45

sex:女



參考代碼

package step3;

import java.util.Scanner;

public class Test {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String name = sc.next();
		int age = sc.nextInt();
		String sex = sc.next();
		Person p = new Person(name,age,sex);
		p.display();
	}
}
class Person{
	String name = "張三";
	int age = 18; 
	String sex = "男";
	/********** Begin **********/
	public Person(String name,int age,String sex){
		this(age);
		this.name = name;
		this.sex = sex;
	}
	public Person(int age){
		this.age = age;
	}
	public void display(){
		String name = "李四";
		int age = 11;
		String sex = "男";
		System.out.println("name:" + this.name);
		System.out.println("age:" + this.age);
		System.out.println("sex:" + this.sex);
	}
	/********** End **********/
}



第五關


編程要求
我已經幫你創建好了兩個文件一個是WuMingFen.java,另一個是Test.java,你需要切換文件在兩個文件中編寫代碼來完成本關任務。

爲“無名的粉”寫一個類:class WuMingFen 要求:

有三個屬性:面碼:String theMa 粉的分量(兩):int quantity是否帶湯:boolean likeSoup;

寫一個構造方法,以便於簡化初始化過程,如: WuMingFen f1 = new WuMingFen(“牛肉”,3,true);;

重載構造方法,使得初始化過程可以多樣化: WuMingFen f2 = new WuMingFen(“牛肉”,2);;

如何使得下列語句構造出來的粉對象是酸辣面碼、2兩、帶湯的? WuMingFen f3 = new WuMingFen();;

寫一個普通方法:check(),用於查看粉是否符合要求。即:將對象的三個屬性打印在控制檯上。


測試說明
我會對你編寫的代碼進行測試:

測試輸入:

牛肉,3,true

預期輸出:

面碼:牛肉,粉的份量:3兩,是否帶湯:true

面碼:牛肉,粉的份量:3兩,是否帶湯:false

面碼:酸辣,粉的份量:2兩,是否帶湯:true

測試輸入:

三鮮,1,true

預期輸出:

面碼:三鮮,粉的份量:1兩,是否帶湯:true

面碼:三鮮,粉的份量:1兩,是否帶湯:false

面碼:酸辣,粉的份量:2兩,是否帶湯:true



參考代碼

這一關有兩個代碼文件,一個是測試代碼文件,一個是類定義文件
1、Test.java

package step4;

import java.util.Scanner;

public class Test {
	
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String theMa = sc.next();
		int quantity = sc.nextInt();
		boolean likeSoup = sc.nextBoolean();
		/********** Begin **********/
		//使用三個參數的構造方法創建WuMingFen對象  取名 f1
		WuMingFen f1=new WuMingFen(theMa,quantity,likeSoup);
		//使用兩個參數的構造方法創建WuMingFen對象  取名 f2
		WuMingFen f2=new WuMingFen(theMa,quantity,false);
		//使用無參構造方法創建WuMingFen對象  取名 f3
		WuMingFen f3=new WuMingFen();
		//分別調用三個類的 check方法
		f1.check();
		f2.check();
		f3.check();
		/********** End **********/	
	}
}

2、WuMingFen.java
/********** Begin **********/
//在這裏添加包名  step4
package step4;
//創建類 添加屬性和方法
class WuMingFen{
	String theMa="酸辣";
	int quantity=2;
	boolean likeSoup=true;
	public WuMingFen(){}
	public WuMingFen(String a,int b,boolean c){
		theMa=a;
		quantity=b;
		likeSoup=c;
	}
	public WuMingFen(String a,int b){
		theMa=a;
		quantity=b;
	}
	public void check(){
		System.out.print("面碼:"+theMa+",粉的份量:"+quantity+"兩,是否帶湯:"+likeSoup);
		System.out.println();
	}
}
/********** End **********/	



第六關


編程要求
現在編輯器中代碼有異常,請利用本關所學知識修改右側代碼使其能輸出如下結果:

hello educoder

我叫楚留香

我喜歡在educoder上學習java


注意: 在Java中是不能用static關鍵字修飾局部變量的,爲什麼? 因爲這個是老大說的,我們做小弟的不能不聽呀。



參考代碼

package step5;

public class Test {
	/********** Begin **********/
	static String name = "楚留香";
	static{
		System.out.println("hello educoder");
	}
	public static void main(String[] args) {
		System.out.println("我叫" + name);
		study();
	}
	public static void study(){
		System.out.println("我喜歡在educoder上學習java");
	}
	/********** End **********/
}



第七關


1、有如下代碼:

public class TestMain{
    public static void main(String args[]){
    MyClass mc1 = new MyClass();
    MyClass mc2 = new MyClass();
    mc1.a = 100;
    mc1.b = 200;
    mc2.a = 300;
    mc2.b = 400;
    System.out.println(mc1.a);
    System.out.println(mc1.b);
    System.out.println(mc2.a);
    System.out.println(mc2.b);
    }
}
class MyClass{
    static int a;
    int b;
}

請問輸出結果是(D)
A、100
      100
      100
      100

B、100
      200
      300
      400

C、400
      400
      400
      400

D、300
      200
      300
      400

2、

class MyClass {
    int a;
    static int b;
    void fa(){
    }
    static void fb(){
    }
    public void m1(){
        System.out.println(a);    //位置1
        System.out.println(b);    //位置2
        fa();                     //位置3
        fb();                     //位置4
    }
    public static void m2(){
        System.out.println(a);    //位置5
        System.out.println(b);    //位置6
        fa();                    //位置7
        fb();                    //位置8
    }
}

上述代碼會出錯的位置有:(EG)

A、位置1
B、位置2
C、位置3
D、位置4
E、位置5
F、位置6
G、位置7

3、

class MyClass {
    static int i = 10;
    static {
        i = 20;
        System.out.println("In Static");
    }
    public MyClass() {
        System.out.println("MyClass()");
    }
    public MyClass(int i) {
        System.out.println("MyClass(int)");
        this.i = i;
    }
}
public class TestMain {
    public static void main(String args[]) {
        MyClass mc1 = new MyClass();
        System.out.println(mc1.i);
        MyClass mc2 = new MyClass(10);
        System.out.println(mc2.i);
    }
}

上述代碼的運行結果是:(B)

A、MyClass()
      20
      MyClass(int)
      10
B、In Static
      MyClass()
      20
      MyClass(int)
      10
C、In Static
      MyClass(int)
      20
      MyClass()
      10
D、In Static
      MyClass()
      10
      MyClass(int)
      20

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章