Java面向对象 - 类与对象(EduCoder)实训项目

第一关:创建一个类和一个对象,调用这个对象的属性和方法。

  • 声明一个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 dog = new wuhuarou();
        dog.name = "五花肉";
        dog.color = "棕色";
        dog.variety = "阿拉斯加";

		
		//输出小狗的属性
		System.out.println("名字:" +dog.name+ ",毛色:" + dog.color + ",品种:" + dog.variety );
		
		//调用方法
        dog.eat();
        dog.run();
		
		/********** End **********/
		
	}
}

//在这里定义Dog类
/********** Begin **********/
class wuhuarou{
      String name;
      String color;
      String variety;
      void eat(){
         System.out.println("啃骨头"); 
      }
      void run(){
          System.out.println("叼着骨头跑"); 
      }
}
/********** 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行是合法的(c、d)

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”);
}
第四关:this关键字
测试输入:
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 = "baby";
		int age = 45;
		String sex = "女";
		System.out.println("name:" + this.name);
		System.out.println("age:" +this.age);
		System.out.println("sex:" + this.sex);
	}


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

第5关:类与对象练习

  • 有三个属性:面码: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

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 **********/	
	}
}
/********** 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.println("面码:"+theMa+",粉的份量:"+quantity+"两,是否带汤:"+likeSoup);
	}
}



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

第6关:static关键字
结果:

hello educoder
我叫楚留香
我喜欢在educoder上学习java

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关:选择题
有如下代码:

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

上述代码会出错的位置有:(e,g)

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

你可能感兴趣的:(java(educoder))