类的访问权限修饰符解析

类的访问权限修饰符有public protected public 还有默认的default

public:共有的,就和我们平时的公共场合一样,毫无疑问,这是每个人都能来的,来者不拒,每个人都有平等的机会来这,在Java中,也是这样,只要是被public所修饰的属性方法等,无论是本类、子类、同一个包下,还是不在一个包都能被访问

protected:受保护的,字面意思我们就知道,他肯定不像public那样来者不拒,而是被一些事物保护的,所以,protected所修饰的属性方法等可以被本类、子类、同一个包访问,对于外来人员,是拒之门外的,不见陌生人

default(修饰包):默认的,他的权限较之protected又有点低了,平时我们也不太使用这个访问权限符,defaul修饰方法可以被本类、同一个包访问

!!!default不能修饰变量

private:私有的,当然只能给自己看,所以private修饰的方法属性只能被本类访问,也更好地将我们的属性方法等封装起来,表现面向对象的有点,给使用者减少了困难

为了能清楚地区分这几个修饰符,我整理了一张表出来
在这里插入图片描述
这里我们谈谈private,既然private修饰符修饰的属性只能被本类成员访问,那是不是我们用private修饰属性的时候,我们类的调用者是不是就不能使用这个被private修饰的属性了呢?

答案是NO

概念肯定是正确的,就是说被private修饰的属性只能被本类成员访问,可是当我们类的调用者需要使用时,我们可以转换一下,转换成被本类访问不就可以了吗
我们直接拿代码看

class Person{
	private String name = "张三";
	private int age = 18;
	public void show(){
		System.out.println("我叫" + name + ", 今年" + age + "岁了");
	}
}
public class Test{
	public static void main(String[] args){
		Person person = new Person();
		person.show();
	}
}
//执行结果
我叫张三,今年18岁了

在这份代码中,属性 name , age 被 private 修饰,如果我们直接用 person.name 或者 person.name 肯定是不通过的,但是 show 是个公有方法,可以使用,所以我就想在 show 中访问属性,打印出来,所以问题就变成怎么访问 show 方法,show 是公有方法,我们直接通过引用.方法名称调用即可

可是,问题又来了,如果我想修改被 private 修饰的属性的值时,该怎么办呢?这里,Java为我们提供了 getter 和 setter 方法

class Person{
	private String name;
	private int age;
	public void setName(String n){
		name = n;
	}
	public String getName(){
		return name;
	}
}
public class Test{
	public static void main(String[] args){
		Person person = new Person();
		person.setName("caocao");
		System.out.println(person.getName());
	}
}
//执行结果
caocao
  • setName 为setter 方法,表示设置成员的值
  • getName 为getter 方法,表示获取成员的值
发布了32 篇原创文章 · 获赞 6 · 访问量 806

猜你喜欢

转载自blog.csdn.net/Beverly_/article/details/104534468
今日推荐