第二关
构造方法
编程要求
根据提示,在右侧编辑器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{
public Person(){
super();
System.out.println("一个人被创建了");
}
public Person(String name,String sex){
super();
System.out.println("姓名:"+name+",性别:"+sex+",被创建了");
}
}
/********** End **********/
第三关选择题
1、c 2、cd
第四关、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 = age;
this.name = name;
this.sex = sex;
}
public Person(int age){
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
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方法
WuMingFen.check();
/********** End **********/
}
}
/********** Begin **********/
//在这里添加包名 step4
package step4;
//创建类 添加属性和方法
public class WuMingFen{
String theMa;
int quantity;
boolean likeSoup;
public WuMingFen(){
this.theMa = theMa;
this.quantity = quantity;
this.likeSoup = likeSoup;
}
public WuMingFen(String name,int a,boolean b){
System.out.println("面码:"+name+",粉的份量:"+a+"两,是否带汤:"+b);
}
public WuMingFen(String name,int a){
System.out.println("面码:"+name+",粉的份量:"+a+"两,是否带汤:false");
}
public static void check(){
System.out.println("面码:酸辣,粉的份量:2两,是否带汤:true");
}
}
/********** End **********/
第六关、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 **********/
}
第七关
1、D 2、EG 3、B