java封装的特点_浅谈Java三大特性之封装

三大特性之浅谈封装

前言

英语:Encapsulation——封装,包装。

面向对象的封装与真实世界的目的是一样的。封装能够使外部访问者不能随意存取对象的内部数据,隐藏了对象的内部细节,只保留有限的对外接口。外部访问者不用关心对象的内部细节,使得操作对象变得简单。

好处

先通过阅读下面的文字,再回来理解可能会更好一点

减少了耦合(物理学上类似相互影响的概念)

便于维护和修改

可以隐藏信息,一些具体实现代码,安全性

对成员变量精准控制

介绍(实现方式)

Java 面向对象的封装性是通过对成员变量和方法进行访问控制实现的。这里就涉及到了访问控制的四个关键字了。

类别\不同地方

同一个类

同一个包

不同包的子类

不同包非子类

私有的(private)

Yes

No

No

No

默认

Yes

Yes

No

No

保护的(protected)

Yes

Yes

Yes

No

公有的(public)

Yes

Yes

Yes

Yes

封装是一种保护作用,将其变量以及方法保护起来,防止被随机访问,所以一定程度上增强了代码的安全性。

示例

下面是代码示例,私有类只能在同一个类中被访问,否则会报错。

05204f391dddfea3389ce92f66048470.png

private还可以防止直接访问特定的构造器(或全部的构造器)

package music.daima.ebook;

class TestClass{

private TestClass(){}

static TestClass make(){

return new TestClass();

}

}

public class PrivateDaiMa {

public static void main(String args[]){

// TestClass x = new TestClass();

TestClass x = TestClass.make();

// 不能通过构造器来创建TestClass,要通过调用make方法才可以

}

}

报错信息说明TestClass的private将其构造器给私有化了,不能直接访问。

8b07470286db7340c1e09e98cdc1d76d.png

访问不同包的protected方法(非子类的),先是定义在Music类中的BaoHu方法。

ade7a59b038b09a17961de3b4d58d1d5.png

在其它包访问,就会报错,因为在Music里面这个BaoHu的方法用的是protected修饰的。

c88f15005ebb9d377f38bda053d7dab7.png

其实在Idea写代码时候,定义的属性之类可以在左下角有个概览,可以查看是什么类型的

69abc2243be38e4f9809085ab64a2b8e.png

整体的test代码

import music.Music;//导入了music包的Music类

class test{

test(int i){

i = i + 1;

}

private String name;//将其变为public String name;的话下面就可以访问

public int num=2;//公有的可以被访问

double i = 2.2;//默认的定义,也可以被访问,在本包里面

}

public class FengZhuang {

public static void main(String args[]){

test a = new test(6);

System.out.println(a.num);

//a.name就会报错,因为在上面的name是私有的

Music ceshi = new Music();//导入了不同的包中的类

// ceshi.BaoHu();报错,是在其它包里的protected方法

}

}

小结

访问成员有两种方式:一种是调用,即通过类或对象调用它的成员,如p.printX()语句;另一种是继承,即子类继承父类的成员变量和方法。在开发使用的时候,应该尽量限制类中成员的可见性

公有访问级别任何情况下两种方式都可以;(public)

默认访问级别在同一包中两种访问方式都可以,不能在包之外访问;()

保护访问级别在同一包中与默认访问级别一样,两种访问方式都可以。但是在不同包之

外只能继承访问;(protected)

私有访问级别只能在本类中通过调用方法访问,不能继承访问。(private)

感谢阅读!!!

才疏学浅,有不对的地方请指出。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值