多语言展示
当前在线:801今日阅读:23今日分享:25

老黑讲Java之面向对象的封装

Java的三大利器:封装,继承,多态,这次主要介绍封装的意义,其意义在于内部实现对外不可见,但是对外的功能不变,因此不会影响其他模块。
工具/原料
1

eclipse

2

JDK

package和import关键字的使用
1

package关键字的使用    1.java定义类需要指定类名,但是把类名作为唯一标识,难免出现命名冲突的情况,这给团队间复用组建造成巨大困扰。    2.于是Java设计者引入包(package)的概念解决类名冲突的情况。于是Java规定,在定义一个时,必须指定包名。    3.package定义包名必须写在Java类最开始,在类名之前,语法结构:package 报名。示例代码如下:package main;public class Main {}package main2;public class Main {}分析:示例代码中定义两个包分别是main、main2,这样类的全名应是main.Main、main2.Main。还有不同的包名下可以有相同的类名。

2

包名的特点    1.包名可以显示出层次结构,一个包下可以包含其他许多子包,例如:package 包1.包2.包3....;    2.或者团队随心所欲的命名报名,仍然避免不了冲突的情况,所以Java默认规定,公司可以使用域名的倒置命名包名加之项目名,例如:org.apache.log4j.Logger。分析:org.apache.log4j多层包名,其中org.apache是域名倒置,log4j是项目名。见下图小编创建的包名。

3

import的关键字的使用    1.访问一个类时需要写出类的全称,包含包名,这样书写显得繁冗啰嗦,如:com.dragonhegler.main.Main  main = new com.dragonhegler.main.Main();    2.为了解决上述麻烦,java可以使用import关键字对类的全称进行声明,其语法为:import 包名+类名(即全局限定名);    3.使用import声明的类,可以直接使用,无需写出全名。示例代码如下:Main类:package com.dragonhegler.main;import com.dragonhegler.test.Test;public class Main {    public static void main(String args[]) {        Test test = new Test();    }}Test类:package com.dragonhegler.test;public class Test {    public Test(){        System.out.println('Test类');    }}运行结果:    Test类分析:从代码我们可以看出通过import声明类之后,在源文件中可以使用类名来访问。

封装
1

封装的意义    1.封装内部细节,对外提供稳定可靠的服务;    2.便于外部代码的维护,降低耦合性;    3.便于团队管理,协调合作。

2

通过访问控制修饰符实现封装    1.什么是访问控制修饰符?访问控制修饰符指的是添加对类或方法的修饰,可以修改类或方法对外的访问权限;    2.访问控制修饰符的public和private,其中public修饰的类或方法可以在任何情况被人调用,而private修饰的成员只能在本类中被使用,对内实现了封装。示例代码如下:Test类:package com.dragonhegler.test;public class Test {    private int seq;    private String content;    public String name;        public Test(){    }}Main类:package com.dragonhegler.main;import com.dragonhegler.test.Test;public class Main {    public static void main(String args[]) {        Test test = new Test();        test.seq = 0;//编译错误        test.content = '访问';//编译错误        test.name = 'main类';    }}分析:从上面代码不能看出,其他类访问private修饰的成员变量,出现编译错误,而访问public修饰的成员没有问题。

3

protected访问控制修饰符    protected修饰的成员可以被子类和同包类被访问,言外之意其他包的类无法访问,示例代码如下:Test类:package com.dragonhegler.test;public class Test {    protected int age;        public Test(){    }}同包Test2类:package com.dragonhegler.test;public class Test2 {    public static void main(String[] args) {        Test test = new Test();         test.age = 21;    }}Main类:    package com.dragonhegler.main;import com.dragonhegler.test.Test;public class Main {    public static void main(String args[]) {        Test test = new Test();        test.age = 21;//编译错误    }}分析:上述代码实现非同包类访问protected修饰的成员,关于子类访问protected修饰的成员请自行尝试。

4

默认访问控制修饰符    所谓默认访问控制修饰符不写任何控制修饰符,其修饰的成员只可以被同包类调用。

5

访问控制修饰符修饰类    public和默认修饰符可以修饰类,public修饰类可以被任何类调用,默认修饰符修饰的类只能被同包类访问,protected和private修饰内部类。

注意事项
1

运行示例代码,多敲多练。

2

喜欢Java的小伙伴可以与小编多多交流,让我们共同进步。

推荐信息