Java学习笔记(八)——封装
一、封装
1、定义
将类的信息隐藏在类的内部,不允许外部程序直接进行访问,而是通过该类提供的方法来实现对隐藏信息的操作和方法。
2、优点
(1)只能通过规定的方法访问数据
(2)隐藏类的细节,方便修改和实现。
3、封装的实现步骤
(1)修改属性的可见性(private)
(2)创建getter/setter方法(属性的读写)
(3)在getter/setter方法放入控制语句
4、一个demo
package com.cnblogs; public class Telphone
{
private double screen;
private double cpu;
private double mem; public double getScreen()
{
return screen;
} public void setScreen(double newScreen)
{
screen = newScreen;
} public Telphone()
{
System.out.println("构造函数执行");
} public Telphone(float nscreen,float ncpu , float nmem)
{
screen = nscreen;
cpu = ncpu;
mem = nmem;
System.out.println("创建有参构造函数,可以赋初值");
}
}
main函数中调用
package com.cnblogs; public class InitTelphone
{
public static void main(String[] args)
{
// TODO Auto-generated method stub
Telphone phone = new Telphone(5,2,2); phone.setScreen(5);
System.out.println(phone.getScreen()); } }
5、自动创建set/get方法:

然后选择我们要使用的set / get方法即可、
二、Java中的包
1、包的作用
(1)管理java文件
(2)解决同名文件冲突
2、定义包:
package 包名
(1)必须放在java源程序的第一行
(2)包名间可以使用“.”隔开
3、java中的包

4、包的使用
(1)可以通过import关键字,在某个文件中使用其他文件的类
(2)java中,包的命名规范是全小写字母拼写
(3)使用的时候不但可以加载某个包的全部文件,还可以选择加载他的子文件
三、Java中的访问修饰符
1、访问修饰符总结

四、Java中的this关键字
1、this关键字代表当前对象

2、封装对象的时候,经常会使用this关键字
五、Java中的内部类
1、定义:
内部类( Inner Class )就是定义在另外一个类里面的类。与之对应,包含内部类的类被称为外部类。
2、内部类的作用:
(1)内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类。
(2)内部类的方法可以直接访问外部类的所有数据,包括私有的数据
(3)内部类所实现的功能使用外部类同样可以实现,只是有时使用内部类更方便
3、内部类的分类:
- 成员内部类
- 静态内部类
- 方法内部类
- 匿名内部类
4、成员内部类
(1)Inner 类定义在 Outer 类的内部,相当于 Outer 类的一个成员变量的位置,Inner 类可以使用任意访问控制符,如 public 、 protected 、 private 等
(2)Inner 类中定义的 test() 方法可以直接访问 Outer 类中的数据,而不受访问控制符的影响
(3)定义了成员内部类后,必须使用外部类对象来创建内部类对象,而不能直接去 new 一个内部类对象,即:
内部类 对象名 = 外部类对象.new 内部类( );
(4)外部类是不能直接使用内部类的成员和方法,可先创建内部类的对象,然后通过内部类的对象来访问其成员变量和方法
(5)如果外部类和内部类具有相同的成员变量或方法,内部类默认访问自己的成员变量或方法,如果要访问外部类的成员变量,可以使用 this 关键字。
5、Java中的静态内部类
(1)静态内部类不能直接访问外部类的非静态成员,但可以通过 new 外部类().成员 的方式访问
(2)如果外部类的静态成员与内部类的成员名称相同,可通过“类名.静态成员”访问外部类的静态成员;
如果外部类的静态成员与内部类的成员名称不相同,则可通过“成员名”直接调用外部类的静态成员
(3)创建静态内部类的对象时,不需要外部类的对象,可以直接创建 内部类 对象名= new 内部类();
6、Java中的方法类
(1)方法内部类就是内部类定义在外部类的方法中,方法内部类只在该方法的内部可见,即只在该方法内可以使用。
(2)由于方法内部类不能在外部类的方法以外的地方使用,因此方法内部类不能使用访问控制符和 static 修饰符
Java学习笔记(八)——封装的更多相关文章
- Java学习笔记八
IO流:就是input/output输入/输出流. 一.字节流操作文件的便捷类:FileWriter和FileReader import java.io.FileWriter; import java ...
- Java学习笔记之封装与继承
封装 1,将属性定义为私有的(private) 不能通过 对象名.属性 来直接访问,但是可以通过方法来间接的访问, 2,封装的意义:公有属性可以被随意修改,并且不能被程序察觉.封装后,别人通过 ...
- Java 学习笔记 (八) Java 变量
head first java page85 实例变量是声明在类内而不是方法中 class Horse{ private double height=15.2; private String bree ...
- Java学习笔记八(反射)
1.介绍 反射为Java程序在执行时提供了动态的能力.利用反射能够在执行时对程序进行动态的控制.本篇博客着重解说一下Java中的反射. 2.Class类的使用 在Java执行过程中,每一个类被载入后都 ...
- Java学习笔记八:Java的流程控制语句之循环语句
Java的流程控制语句之循环语句 一:Java循环语句之while: 生活中,有些时候为了完成任务,需要重复的进行某些动作.如参加 10000 米长跑,需要绕 400 米的赛道反复的跑 25 圈.在 ...
- 1.11(java学习笔记)封装
封装将内部细节封装起来,只暴露外部接口. 比如我们的电视就将复杂的内部线路用外壳封装起来,只留下外部按钮或遥控,用户只需要知道按钮或遥控的作用就可以,无需明白电视内部是如何工作. 而且封装也保障了安全 ...
- Java学习笔记(八)面向对象---抽象类
当多个类中出现相同功能,但是功能主体不同时,我们可以向上抽取,只抽取功能定义,而不抽取功能主体. 抽象类的特点 抽象方法一定在抽象类中. 抽象方法和抽象类都必须被abstract关键字修饰. 抽象类不 ...
- Java学习笔记之——封装
1. 属性和方法放到类中 2. 信息的隐藏 (1) 属性的隐藏 (2) 方法实现的细节隐藏 3. 权限修饰符: 从小到大的顺序:private->默认的(什么都不写)->protected ...
- java学习笔记之基础篇
java选择语句之switch //switch可以用于等值判断 switch (e) //int ,或则可以自动转化成int 的类型,(byte char short)枚举jdk 7中可以防止字 ...
- Java IO学习笔记八:Netty入门
作者:Grey 原文地址:Java IO学习笔记八:Netty入门 多路复用多线程方式还是有点麻烦,Netty帮我们做了封装,大大简化了编码的复杂度,接下来熟悉一下netty的基本使用. Netty+ ...
随机推荐
- 76 binary_search 查找重复元素
[本文链接] http://www.cnblogs.com/hellogiser/p/binary-search-for-repeated-element.html [题目] 给定一个升序排列的自然数 ...
- Xcode 必备插件管理器 http://alcatraz.io
各种小插件,其中写注释用的 VVDocumenter 是必备的!
- PHP json_encode / json_decode
2015年3月26日 14:14:16 PHP的json函数对几个特殊值的处理笔记 <?php //----------编码 $a = array(); $b = json_encode($a) ...
- Java web 开发环境搭建
1.下载jdk-8u60-windows-i586.exe;安装过程会让指定jre的安装路径,此处最好指定和jdk安装一个目录下(D:\Program Files\Java\jdk1.8.0_60,D ...
- perl 判断数组相等的三种方法
1.数组相等,数组成员相同,位置也相同 一般的如果判断@array1 等于 @array2 a.数组长度相同 $#array1=$#array2, 比较数组长度,不能使用length函数,length ...
- opencv-3.x.0-x86-mingw32-staticlib-gcc5.3.0-20160712.7z
折腾了半天 用 cmake 3.5.0 + gcc5.3.0 编译 opencv3.x.0 静态库 opencv-3.0.0-x86-mingw32-staticlib-gcc5.3.0-201607 ...
- imageNamed和imageWithContentsOfFile-无法加载图片的问题
问题描述 图片资源放在Assets.xcassets中,分别用UIImage的类方法imageNamed和imageWithContentsOfFile获取图片对象,但发生奇怪的情况,前者获取到图片对 ...
- Mac shell 添加VPN 路由
苦于每次使用内网VPN,都需要手动添加route来设置网络的映射,才可以正常使用VPN. 每次都需要自动添加,当然就是觉得很烦,想到Mac的shell.反正每次添加的时候都是在终端执行添加路由.为了方 ...
- 汉企PHP开班
明天PHP正式开班,没什么大目标 ,在四个半月的时间吧基础知识掌握牢固,自信的面对企业.
- 创建URL为空的解决办法
在使用+URLWithString:或-initWithString:创建一个URL对象时,提供的参数字符串必须符合RFC 2396标准(O网页链接.而这两个方法又是根据RFC 1738(O网页链接和 ...