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