面向对象(this关键字)

this:代表所在类的对象引用

注意:方法被那个对象调用,this就代表那个对象

this关键字使用场景

A:局部变量隐藏成员变量

(一)见名知意

//学生类
class Student {
	//姓名
	private String name;
	//年龄
	private int age;
	
	//姓名获取值
	public String getName() {
		return name;
	}
	
	//姓名设置值
    //当我们在定义参数名时往往要给参数名起一个见名之意的名字,以方便人们能够见名知意
	public void setName(String name) {
        //将传入的参数赋值给成员变量name
        //此时的name不能代表成员变量中的name
        //此时系统将会将其默认为是传入参数的这个name
        //此时执行程序就会形成name给name本身赋值
        //对于成员变量没有任何影响
		name = name; 

    }
}



//测试类
class StudentTest {
	public static void main(String[] args) {
		//创建学生对象
		Student s = new Student();
		
		//给成员变量赋值
        //对象名.方法名
		s.setName("林青霞");=====将输入的参数传递到set方法中

	}
}

(二)如何做到见名知意 

如果给成员变量赋值的方法中,参数名与成员变量名一致,则就必须使用this来达到给private修饰下的成员变量赋值

//定义学生类
class Student {
	//姓名
	private String name;
	//年龄
	private int age;
	
	//姓名获取值
	public String getName() {
		return name;
	}
	
	//姓名设置值
	public void setName(String name) { //name = "林青霞";
		//name = name; //变量的使用规则:就近原则
		//这里是类名,目前还没有说过类似的用法,所以这个是有问题的
		//这里的调用只能通过对象名
		//这个对象如果存在,它应该代表的是Student的一个对象。
		//那么,谁能够代表当前类的对象呢? java就提供了一个关键字 this
		//Student.name = name;
		this.name = name;
	}
	
	//年龄获取值
	public int getAge() {
		return age;
	}
	
	//年龄赋值
	public void setAge(int age) {
		this.age = age;
	}
}

//测试类
class StudentTest {
	public static void main(String[] args) {
		//创建学生对象
		Student s = new Student();
		
		//给成员变量赋值
		s.setName("林青霞");
		s.setAge(27);
		//获取数据
		System.out.println(s.getName()+"---"+s.getAge());
	}
}

标准代码改进版

/*
	标准的代码改进版
	
	this:哪个对象调用那个方法,this就代表那个对象
*/
class Student {
	private String name;
	private int age;
	
	public String getName() {
		return name; //这里其实是隐含了this
	}
	
	public void setName(String name) {
		this.name = name;
	}
	
	public int getAge() {
		return age;
	}
	
	public void setAge(int age) {
		this.age = age;
	}
}

class StudentTest2 {
	public static void main(String[] args) {
		//创建一个对象
		Student s1 = new Student();
		s1.setName("林青霞");
		s1.setAge(27);
		System.out.println(s1.getName()+"---"+s1.getAge());
		
		//创建第二个对象
		Student s2 = new Student();
		s2.setName("刘意");
		s2.setAge(30);
		System.out.println(s2.getName()+"---"+s2.getAge());
	}
}

案例一(编写一个手机类)

	
	手机类:
		成员变量:
			品牌:String brand;
			价格:int price;
			颜色:String color;
		成员方法:
			针对每一个成员变量给出对应的getXxx()/setXxx()方法。
		最后定义测试:
			创建一个对象,先通过getXxx()方法输出成员变量的值。这一次的结果是:null---0---null
			然后通过setXxx()方法给成员变量赋值。再次输出结果。这一次的结果是:三星---2999---土豪金
*/
class Phone {
	//品牌
	private String brand;
	//价格
	private int price;
	//颜色
	private String color;
	
	//getXxx()和setXxx()方法
	public String getBrand() {
		return brand;
	}
	
	public void setBrand(String brand) {
		this.brand = brand;
	}
	
	public int getPrice() {
		return price;
	}
	
	public void setPrice(int price) {
		this.price = price;
	}
	
	public String getColor() {
		return color;
	}
	
	public void setColor(String color) {
		this.color = color;
	}
}

class PhoneTest {
	public static void main(String[] args) {
		//创建手机对象
		Phone p = new Phone();
		
		//直接输出默认值
		System.out.println(p.getBrand()+"---"+p.getPrice()+"---"+p.getColor());
		
		//给成员变量赋值
		p.setBrand("三星");
		p.setPrice(2999);
		p.setColor("土豪金");
		//再次输出
		System.out.println(p.getBrand()+"---"+p.getPrice()+"---"+p.getColor());
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值