Java封装性及四种权限修饰符详解
Java封装性及四种权限修饰符详解
文章目录1、封装概述
2、封装性的使用
3、封装的作用
4、四种权限修饰符
5、四种权限修饰符测试
[var1]
封装(Encapsulation)是面向对象方法的重要原则,就是把对象的属性和操作(或服务)结合为一个独立的整体,并尽可能隐藏对象的内部实现细节。
封装的优点
良好的封装能够减少耦合。
类内部的结构可以自由修改。
可以对成员变量进行更精确的控制。
隐藏信息,实现细节。
[var1]
public class Main {
public static void main(String[] args) {
Student student = new Student();
student.name="皮皮虾";
student.age=20;
student.show();
student.age=-5;
student.show();
}
}
class Student{
String name;
int age;
public void show() {
System.out.println("name:"+name+",age:"+age);
}
}
上述代码表面上看没有什么问题,但在实际开发中对于属性肯定会有一些限制,例如:年龄不能为负数
解决方法
提供getter和setter方法获取属性和给属性赋值,且在该方法中可以设置条件判断
使用权限修饰符来注销掉原来的例如student.age=20; 这种赋值方法。
public class Main {
public static void main(String[] args) {
Student student = new Student();
student.setAge(5);
student.show();
student.setAge(-2);
student.show();
}
}
class Student{
private String name;
private int age;
public int getAge() {
return age;
}
public void setAge(int age) {
//条件判断
if (age >= 0){
this.age = age;
}else {
this.age = 0;
}
}
public void show() {
System.out.println("name:"+name+",age:"+age);
}
}
[var1]
对象的数据封装特性彻底消除了传统结构方法中数据与操作分离所带来的种种问题,提高了程序的可复用性和可维护性,降低了程序员保持数据与操作内容的负担。
对象的数据封装特性还可以把对象的私有数据和公共数据分离开,保护了私有数据,减少了可能的模块间干扰,达到降低程序复杂性、提高可控性的目的。
[var1]
Java中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。Java 支持 4 种不同的访问权限。
default (即默认,什么也不写): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。
private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)
public : 对所有类可见。使用对象:类、接口、变量、方法
protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)。
通过以下表来说明访问权限:
修饰符
类内部
同一包内
不同包子类
同一工程
private
Yes
default(缺省)
Yes
Yes
protected
Yes
Yes
Yes
public
Yes
Yes
Yes
Yes对于class的权限修饰符只可以用public和default(缺省)
public类可以在任意地方被访问
default类只可以被同一包内部的类访问
[var1]
在同一包下,创建Main类和test类
Main.java
public class Main {
String defaultName;
private String privateName;
public String publicName;
private void privateMethod() {
defaultName = "1";
privateName = "2";
publicName = "3";
}
public void publicMethod() {
defaultName = "1";
privateName = "2";
publicName = "3";
}
void defaultMethod() {
defaultName = "1";
privateName = "2";
publicName = "3";
}
}
test.java
在另一个包下就建立test02类
test02.java
在另一个包下,原先的私有结构、缺省声明的结构都无法使用。
觉得不错的小伙伴可以点赞关注和收藏哦!
Java学习路线目录索引
Java封装性及四种权限修饰符详解相关教程