• 封装
  1. 将类的某些信息隐藏在类的内部,不允许外部程序直接访问,而是通过该类提供的方法类实现对隐藏信息的操作和访问。
  2. 封装的实现步骤:修改属性的可见性(设为private)=>创建setter和getter方法(用于属性的读写)=>在setter和getter方法中加入属性控制语句(对属性值的合法性进行判断)
  • Java中的包
  1. 包的作用:管理Java文件;解决同名文件冲突
  2. 定义包:package 包名,注意:必须放在Java源程序的第一行;包名间可以使用“.”号隔开,如:com.test.Myclass
  3. 系统中的包:java.(功能).(类)
  4. 包的使用:可以通过import关键字,在某个文件使用其他文件中的类。如import com.test.Myclass;
  5. java中,包的命名规范是全小写字母拼写。
  6. 使用包的时候,不但可以加载某个包下的所有文件,如:com.test.*;也可以加载某个具体子包下的所有文件,如:com.test.music.*

  注:默认情况下,java会将同一个包内的类自动导入

  以下定义了两个同名Telephone的类:

package com.test;

public class Telephone {
private double screen;
public double getScreen() {
return screen;
}
public void setScreen(double newScreen) {
screen = newScreen;
}
public Telephone(){
System.out.println("com.test.Telephone无参数的构造方法");
}
}
package com.test.second;

public class Telephone {
public Telephone() {
System.out.println("com.test.secont.Telephone");
}
}

  Demo.java

package com.test;
import com.test.Telephone; public class Demo { public static void main(String[] args) {
Telephone phone = new Telephone();
} }

  运行结果:

  com.test.Telephone无参数的构造方法

package com.test;
import com.test.second.Telephone; public class Demo { public static void main(String[] args) {
Telephone phone = new Telephone();
} }

  运行结果:

  com.test.secont.Telephone

  • 访问修饰符
  1. 可以修饰属性和方法的访问范围
访问修饰符 本类 同包 子类 其他
private      
默认    
protected  
public
  • this关键字

  this代表当前对象,this.属性 操作当前对象的属性;this.方法 调用当前对象的方法

  • 内部类

  内部类,是定义在另一个类里面的类,与之对应,包含内部类的类被称为外部类。

  内部类的作用:

  1. 内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类
  2. 内部类的方法可以直接访问外部类的所有数据,包括私有的数据
  3. 内部类所实现的功能使用外部类同样可以实现,只是有时使用内部类更方便
  4. 内部类分为:成员内部类、静态内部类、方法内部类、匿名内部类
  • 成员内部类

  

  1. Inner 类定义在 Outer 类的内部,相当于 Outer 类的一个成员变量的位置,Inner 类可以使用任意访问控制符,如 public 、 protected 、 private 等
  2. Inner 类中定义的 test() 方法可以直接访问 Outer 类中的数据,而不受访问控制符的影响
  3. 定义了成员内部类后,必须使用外部类对象来创建内部类对象,而不能直接去 new 一个内部类对象,即:内部类 对象名 = 外部类对象.new 内部类( );
  4. 编译上面的程序后,会发现产生了两个 .class 文件,Outer$Inner.class和Outer.class,第二个是外部类的 .class 文件,第一个是内部类的 .class 文件,即成员内部类的 .class 文件总是这样:外部类名$内部类名.class

  注意:

  1. 外部类是不能直接使用内部类的成员和方法
  2. 如果外部类和内部类具有相同的成员变量或方法,内部类默认访问自己的成员变量或方法,如果要访问外部类的成员变量,可以使用 this 关键字

  

  • 静态内部类

  

  1. 静态成员类不能直接访问外部类的非静态成员,可以通过new 外部类().成员来访问
  2. 如果外部类的静态成员与内部类的成员名称相同,可通过“类名.静态成员”访问外部类的静态成员;如果外部类的静态成员与内部类的成员名称不相同,则可通过“成员名”直接调用外部类的静态成员
  3. 创建静态内部类的对象时,不需要外部类的对象,可以直接创建 内部类 对象名= new 内部类();
  • 方法内部类

  方法内部类是内部类定义在外部类的方法中。方法内部类只在该方法的内部可见。

  注意:由于方法内部类不能在外部类的方法以外的地方使用,因此方法内部类不能使用访问控制符和static修饰符。

package com.test;

public class Demo12 {

    public void show() {
final int a = 12;
int b = 13; class MInner {
int c= 2;
public void print() {
System.out.println("外部类方法中的变量a=" + a);
System.out.println("外部类方法中的变量b=" + b);
System.out.println("内部类中的变量c=" + c);
}
}
MInner mi = new MInner();
mi.print();
} public static void main(String[] args) {
Demo12 demo = new Demo12();
demo.show();
}
}

  运行结果:  

  外部类方法中的变量a=12
  外部类方法中的变量b=13
  内部类中的变量c=2

Java—封装的更多相关文章

  1. 【原创】中文分词系统 ICTCLAS2015 的JAVA封装和多线程执行(附代码)

    本文针对的问题是 ICTCLAS2015 的多线程分词,为了实现多线程做了简单的JAVA封装.如果有需要可以自行进一步封装其它接口. 首先ICTCLAS2015的传送门(http://ictclas. ...

  2. java封装的方法

    java封装是由Java是面向对象程序设计语言的性质决定的,面向对象程序设计语言的三大特性之一就是封装.封装其实就是包装的意思,从专业的角度来看,就是把对象的所有组成部分组合在一起,保护私有属性. 如 ...

  3. Java - 24 Java 封装

    Java 封装 在面向对象程式设计方法中,封装(英语:Encapsulation)是指,一种将抽象性函式接口的实作细节部份包装.隐藏起来的方法. 封装可以被认为是一个保护屏障,防止该类的代码和数据被外 ...

  4. Echarts 的 Java 封装类库 转自 https://my.oschina.net/flags/blog/316920

    转自: https://my.oschina.net/flags/blog/316920 Echarts 的 Java 封装类库:http://www.oschina.net/p/echarts-ja ...

  5. Java-Runoob-面向对象:Java 封装

    ylbtech-Java-Runoob-面向对象:Java 封装 1.返回顶部 1. Java 封装 在面向对象程式设计方法中,封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细 ...

  6. java封装的优点

    在面向对象程式设计方法中,封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部份包装.隐藏起来的方法. 封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机 ...

  7. 乐字节Java|封装JavaBean、继承与权限修饰

    本文继续讲Java封装.上一篇:乐字节Java|GC垃圾回收机制.package和import语句 这次讲述JavaBean.继承与权限修饰 一. 封装javaBean 封装(Encapsulatio ...

  8. Java 封装 继承 多态

    Java 继承 继承的概念 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类. 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法 ...

  9. Java“封装”的例子

    /*功能:Java"封装"的典型例子*/ public class Demo3_5{    public static void main(String args[]){      ...

  10. # 095 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 03 封装总结 01 封装知识点总结

    095 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...

随机推荐

  1. 洛谷 P1036 选数

    嗯.... 这种类型的题在新手村出现还是比较正常的, 但是不知道为什么它的分类竟然是过程函数与递归!!!(难道这不是一个深搜题吗??? 好吧这就是一道深搜题,所以千万别被误导... 先看一下题目: 题 ...

  2. javascript的最重要的特性之一:闭包的解决方案

    初始代码: for (var j = 0; j < lnglats.length; j++) { AMap.event.addListener(markers[j], 'mouseover', ...

  3. Linux安全加固--系统相关

    一.系统相关 1.系统关键文件设置 1.1.设置文件初始权限 设置默认的umask值,增强安全性. [root@localhost ~]# umask 0022 /etc/profile最下面添加一行 ...

  4. mysql 配置utf8 编码,支持 emoji 方法!!!

    utf8_general_ci 已经 过时了...请以后用mysql 考虑使用 utf8mb4, utf8mb4_unicode_ci!!! 兼容性更好. mysql的utf8编码的一个字符最多3个字 ...

  5. liunx 内置mail 发送邮件

    邮件配置文件/etc/mail.rc [root@ ~]# vim /etc/mail.rc #添加.修改如下内容 .com .com .com set smtp-auth-password=xxx ...

  6. 【笔记】Django的ORM之多对多表的增和删

    [笔记]Django的ORM之多对多表的增和删 Django ORM 多对多  一 昨日补充:外键关联 外键在ORM中的关联方式: 与数据表相关的类都放到models.py文件中 class Book ...

  7. [2019BUAA软工]团队项目选择

    Team V1 项目分析 写在前面 项目 内容 这个作业属于哪个课程 BUAA2019软件工程 这个作业的要求在哪里 团队项目选择 参考链接 如何提出靠谱的项目建议 NABCD 我们在这个课程的目标是 ...

  8. 5-----BBS论坛

    BBS论坛(五) 5.1.cms后台修改密码功能完成 (1)新建app/forms.py # app/forms.py from wtforms import Form class BaseForm( ...

  9. 【ACM】无聊的小明

    无聊的小明 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   描述       这天小明十分无聊,没有事做,但不甘于无聊的小明聪明的想到一个解决无聊的办法,因为他突然对数的正 ...

  10. Dockerfile的书写规则和指令的使用方法

    Dockfile是一种被Docker程序解释的脚本,Dockerfile由一条一条的指令组成,每条指令对应Linux下面的一条命令.Docker程序将这些Dockerfile指令翻译真正的Linux命 ...