private关键字和getter和setter方法

private关键字

 私有的,私密的                                                                                                                                                                                   
 可以修饰成员变量、成员方法、构造方法、内部类。
 被private修饰的成员,只能在本类中被访问。
 private只是封装的一种体现形式,封装还可以使用其他的修饰符来完成

实例:



class private关键字1 
{
	public static void main(String[] args) 
	{
		Student s = new Student();
		s.name = "Tom";
		s.age = 10;
		s.score = 100;
		s.show();
	}
}
class Student
{
	private String name;
	private int age;
	private int score;

	public void show(){
		System.out.println("name="+name+",age="+age+",score="+score);
	}
}

结果:

---------- 编译java ----------
private关键字1.java:8: 错误: name可以在Student中访问private
		s.name = "Tom";
		 ^
private关键字1.java:9: 错误: age可以在Student中访问private
		s.age = 10;
		 ^
private关键字1.java:10: 错误: score可以在Student中访问private
		s.score = 100;
		 ^
3 个错误

输出完成 (耗时 0 秒) - 正常终止

因为变量已经成为私有,所以无法再在主类进行访问,所以加载不到权限,程序报错。

这时候,getter和setter方法,就变得至关重要,为了保护变量的同时又能对变量赋值和取值,就要在类中对变量进行封装,这里也是封装的一种体现形式。

getter和setter方法



class private关键字1 
{
	public static void main(String[] args) 
	{
		Student s = new Student();
		s.setName("Tom");
		s.setAge(10);
		s.setScore(100);
		System.out.println("name="+s.getName()+",age="+s.getAge()+",score="+s.getScore());
		s.show();
	}
}
class Student
{
	private String name;
	private int age;
	private int score;

	public void setName(String name){
		this.name = name;
	}
	public String getName(){
		return name;
	}
	public void setAge(int age){
		this.name = name;
	}
	public int getAge(){
		return age;
	}
	public void setScore(int score){
		this.score = score;
	}
	public int getScore(){
		return score;
	}
	public void show(){
		System.out.println("name="+name+",age="+age+",score="+score);
	}
}

 输出结果:

这时,就可以利用类中的方法来对成员变量进行赋值和取值了。

这里面set方法中,有一个关键字 this,也是十分重要的,this后面的变量是指代当前类中的成员变量,等号后面的变量是方法中传进来的局部变量,也就是把属性值在调用的时候传进来,然后再赋予给成员变量来达到给变量赋值的作用,这样的话可以少定义一些变量名,而且方便分析和记忆。

 

还有比较方便的一点是,可以在赋值的同时对传入的值进行条件控制,只赋予有价值是自己想要的值,例如输入名字不能太长,输入性别不能输入除了男女之外的信息等等。

例如:

import java.util.Scanner;

class private关键字 
{
	public static void main(String[] args) 
	{
		Scanner sc = new Scanner(System.in);
		Student s = new Student();
		boolean b_name;
		do{
			System.out.println("please input your name:");
			String name = sc.next();
			b_name = s.setName(name);
		}while(b_name == false);
		
		s.setAge(10);

		s.show();
	}
}
class Student
{
	private String name;
	private int age;
	private int score;

	public boolean setName(String name){
		if(name.length()>4){		
			System.out.println("input error!please input again!");
			return false;
		}
		else
		{
			this.name = name;
			return true;
		}
			
	}

	public String getName(){
		return name;
	}

	public int setAge(int age){
		this.age = age;
		return age;
	}
	public int getAge(){
		return age;
	}
	public void setScore(int score){
		this.score = score;
	}
	public int getScore(){
		return score;
	}

	public void show(){
		System.out.println("name="+name+",age="+age+",score="+score);
	}
}

效果为:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值