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

你可能感兴趣的:(Educoder–Java面向对象(第一章)- 类与对象【笔记+参考代码】)