java封装4个访问权限_Java封装性及四种权限修饰符详解

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);

}

}

3a48546f34b54cd50f18115560ba8be5.png

上述代码表面上看没有什么问题,但在实际开发中对于属性肯定会有一些限制,例如:年龄不能为负数

解决方法

提供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);

}

}

8b5d99b46bfbd2329e673089f23f3222.png

[var1]

对象的数据封装特性彻底消除了传统结构方法中数据与操作分离所带来的种种问题,提高了程序的可复用性和可维护性,降低了程序员保持数据与操作内容的负担。

对象的数据封装特性还可以把对象的私有数据和公共数据分离开,保护了私有数据,减少了可能的模块间干扰,达到降低程序复杂性、提高可控性的目的。

[var1]

Java中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。Java 支持 4 种不同的访问权限。

default (即默认,什么也不写): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。

private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)

public : 对所有类可见。使用对象:类、接口、变量、方法

protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)。

cee57e6af41043bfab909a46b771df15.png

通过以下表来说明访问权限:

修饰符

类内部

同一包内

不同包子类

同一工程

private

Yes

default(缺省)

Yes

Yes

protected

Yes

Yes

Yes

public

Yes

Yes

Yes

Yes对于class的权限修饰符只可以用public和default(缺省)

public类可以在任意地方被访问

default类只可以被同一包内部的类访问

[var1]

在同一包下,创建Main类和test类

83dbb7cad964dd43962662cb3350cb03.png

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

e9541fbee990b57e8118f2dae9ca1d9d.png

ae3c39c527f02ba4108a42701656c01a.png

在另一个包下就建立test02类

3706a59e397ec5d6ab04e565a6c13b71.png

test02.java

2f62b6db90f25728b93786e58335cc0a.png

在另一个包下,原先的私有结构、缺省声明的结构都无法使用。

8e063d675fb95f3623d8728a0415da1c.png

觉得不错的小伙伴可以点赞关注和收藏哦!

Java学习路线目录索引

20e48cf8641dc9c11d9697c844a5c51b.png

Java封装性及四种权限修饰符详解相关教程

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值