目录
第1关:什么是类,如何创建类
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 **********/
第2关:构造方法
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 p = new Person();//括号别漏了
System.out.println ("一个人被创建了");//println()
System.out.println ("姓名:" + name +",性别:"+ sex + ",被创建了" );
/********** End **********/
}
}
//创建Person对象,并创建两种构造方法
/********** Begin **********/
class Person{
String name;
String sex;
//方法一:无参构造
void Person(){
}
//方法二:有参构造
void Person(String name,String sex){
this.name = name;
this.sex = sex;
}
}
/********** End **********/
第3关:选择题(一)
任务描述
本关任务:使用this
关键字,设置对象的成员变量。
输出结果: 传入的name:李四age:10
student属性name:张三age:18
上述结果我们可以发现一个问题,在构造方法中name
和age
并没有设置成功,stu
对象的name
属性和age
属性的值还是默认定义好的张三
和18
。
怎么解决这个问题呢?你需要学习两个知识点:
1.什么是成员变量; 2.this
关键字。
什么是成员变量
成员变量就是对象的属性:
第4关:This关键字
关于this
关键字,你只需要记住它就是指自身,this
即代表自己,this.属性
访问的是自己的属性、this()
访问的就是自己的无参构造方法。
例1:this.属性
例2:this.属性,this()
输出: I am
张三
可以发现,如果我们把上述this.name = name
改为 name = name
,那么最终的结果就变成了: I am
null
this()
调用的是Person
自己的无参构造方法,this.name
访问的是Person
对象自身的name
,而方法参数中的name
则表示方法传入的值。
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.
this.sex = sex;//加上this.
}
public Person(int age){
this.age = age;//加上this.
}
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关:类与对象练习
1.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();
f3.theMa = "酸辣";
f3.quantity = 2;
f3.likeSoup = true;
//分别调用三个类的 check方法
f1.check();
f2.check();
f3.check();
/********** End **********/
}
}
2.包(给代码文件分类)
如果一个类被定义在某一个包下那么在定义类的时候需要声明包名,否则程序会报错。
/********** Begin **********/
//在这里添加包名 step4
package step4;
//创建类 添加属性和方法
public class WuMingFen{
String theMa;//属性1
int quantity;//属性2
boolean likeSoup;//属性3
public WuMingFen(){}//方法
//1
public WuMingFen(String theMa,int quantity,boolean likeSoup){
this.theMa = theMa;
this.quantity = quantity;
this.likeSoup = likeSoup;
}
//2
public WuMingFen(String theMa,int quantity){
this.theMa = theMa;
this.quantity = quantity;
}
//3
写一个普通方法:check(),用于查看粉是否符合要求。即:将对象的三个属性打印在控制台上。
public void check(){
System.out.println("面码:" + theMa + ",粉的份量:"+ quantity + "两,是否带汤:" + likeSoup);
}
}
/********** End **********/
第6关: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关:选择题(二)