第二章 Java面向对象-类与对象

目录

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

第2关:构造方法 

第3关:选择题(一)

任务描述

什么是成员变量

第4关:This关键字

第5关:类与对象练习

1.src/step4/ Test.java

2.包(给代码文件分类)

第6关:static关键字

第7关:选择题(二) 


第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

上述结果我们可以发现一个问题,在构造方法中nameage并没有设置成功,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关:选择题(二) 

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值