EduCoder Java程序设计-类与对象(1)第1关:什么是类,如何创建类 第2关:构造方法 选择题 第4关:This关键字 第5关:类与对象练习 第6关:static关键字

文章目录

  • 第1关:什么是类,如何创建类
    • 编程要求
    • 答案
  • 第2关:构造方法
    • 编程要求
    • 答案
  • 第3关:选择题
    • 答案
  • 第4关:This关键字
    • 编程要求
    • 答案
  • 第5关:类与对象练习
    • 答案
  • 第6关:static关键字
    • 编程要求
    • 答案
  • 第7关:选择题
    • 答案

第1关:什么是类,如何创建类

编程要求

根据提示,在右侧编辑器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对象的属性
		Dog wuhuarou = new 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,color,variety;
	void eat(){
		System.out.println("啃骨头");
	}
	void run() {
		System.out.println("叼着骨头跑");
	}
}


/********** End **********/

第2关:构造方法

编程要求

根据提示,在右侧编辑器Begin-End处补充代码:

创建一个Person类,给Person类定义一个无参构造方法和一个有参构造方法,有参构造方法定义两个String类型参数name和sex在main方法中调用无参构造和有参构造方法;

调用无参构造方法输出:一个人被创建了;

调用有参构造方法应根据输入的数据输出对应的结果,如输入:张三,男,则输出:姓名:张三,性别:男,被创建了。

测试说明

测试输入:张富贵,未知
预期输出:
一个人被创建了
姓名:张富贵,性别:未知,被创建了

总结:
对象的构造方法:
对象在被创建的时候,也就是被new的时候,会自动调用构造方法。

在构造方法中可以做对象初始化操作,有如下特征;

构造方法与对象的方法不同,它是在对象创建时自动调用的;

构造方法可以有参数,也可以无参数;

构造方法无返回值;

构造方法名必须和类名相同;

如果定义的类没有声明构造方法,对象在创建时默认使用空的构造方法。

开始你的任务吧,祝你成功!

答案

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 p1=new Person();
    	Person p2=new Person(name,sex);

		/********** End **********/
		
	}
}

//创建Person对象,并创建两种构造方法
/********** Begin **********/
class Person{
	String name,sex;
	public Person() {
		System.out.println("一个人被创建了");
		
	}
	public Person(String Name,String Sex) {
		name=Name;
		sex=Sex;
		System.out.println("姓名:" + name +",性别:" + sex + ",被创建了");
		
	}
}
/********** End **********/

第3关:选择题

1、下列关于构造方法的说法不正确的是()
A 、Java语言规定构造方法名必须与类名相同
B 、Java语言规定构造方法没有返回值,且不用void关键字声明
C 、构造方法不可以重载
D 、构造方法只能用new关键字来创建

2、类Test定义如下:

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

将下列哪些方法插入到第7行是合法的()
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"); } 

答案

C
CD

第4关:This关键字

编程要求

右侧编辑器中已经编写好了代码,但是输出结果不能让我们满意,请根据所学知识修改代码,使其能输出如下结果:
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:" + name);
		System.out.println("age:" + age);
		System.out.println("sex:" + sex);
	}
	/********** End **********/
}

第5关:类与对象练习

编程要求

我已经帮你创建好了两个文件一个是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

鼠标悬停即可切换文件:

答案

//src/step4/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);

		//使用无参构造方法创建WuMingFen对象  取名 f3
		WuMingFen f3 = new WuMingFen();
		//分别调用三个类的 check方法
		f1.check();
		f2.check();
		f3.check();	
		/********** End **********/	
	}
}

//src/step4/Test.java
//src/step4/WuMingFen.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);

		//使用无参构造方法创建WuMingFen对象  取名 f3
		WuMingFen f3 = new WuMingFen();
		//分别调用三个类的 check方法
		f1.check();
		f2.check();
		f3.check();
		
		/********** End **********/	
	}
}

//src/step4/WuMingFen.java

第6关:static关键字

编程要求

现在编辑器中代码有异常,请利用本关所学知识修改右侧代码使其能输出如下结果:

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 **********/
}

第7关:选择题

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;
        }
请问输出结果是()
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
        }
    }
上述代码会出错的位置有:()
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);
        }
    }

上述代码的运行结果是:()
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 

答案

D
EG
B

你可能感兴趣的:(EduCoder)