一、封装

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学习笔记(八)——封装的更多相关文章

  1. Java学习笔记八

    IO流:就是input/output输入/输出流. 一.字节流操作文件的便捷类:FileWriter和FileReader import java.io.FileWriter; import java ...

  2. Java学习笔记之封装与继承

    封装 1,将属性定义为私有的(private)   不能通过  对象名.属性  来直接访问,但是可以通过方法来间接的访问, 2,封装的意义:公有属性可以被随意修改,并且不能被程序察觉.封装后,别人通过 ...

  3. Java 学习笔记 (八) Java 变量

    head first java page85 实例变量是声明在类内而不是方法中 class Horse{ private double height=15.2; private String bree ...

  4. Java学习笔记八(反射)

    1.介绍 反射为Java程序在执行时提供了动态的能力.利用反射能够在执行时对程序进行动态的控制.本篇博客着重解说一下Java中的反射. 2.Class类的使用 在Java执行过程中,每一个类被载入后都 ...

  5. Java学习笔记八:Java的流程控制语句之循环语句

    Java的流程控制语句之循环语句 一:Java循环语句之while: 生活中,有些时候为了完成任务,需要重复的进行某些动作.如参加 10000 米长跑,需要绕 400 米的赛道反复的跑 25 圈.在 ...

  6. 1.11(java学习笔记)封装

    封装将内部细节封装起来,只暴露外部接口. 比如我们的电视就将复杂的内部线路用外壳封装起来,只留下外部按钮或遥控,用户只需要知道按钮或遥控的作用就可以,无需明白电视内部是如何工作. 而且封装也保障了安全 ...

  7. Java学习笔记(八)面向对象---抽象类

    当多个类中出现相同功能,但是功能主体不同时,我们可以向上抽取,只抽取功能定义,而不抽取功能主体. 抽象类的特点 抽象方法一定在抽象类中. 抽象方法和抽象类都必须被abstract关键字修饰. 抽象类不 ...

  8. Java学习笔记之——封装

    1. 属性和方法放到类中 2. 信息的隐藏 (1) 属性的隐藏 (2) 方法实现的细节隐藏 3. 权限修饰符: 从小到大的顺序:private->默认的(什么都不写)->protected ...

  9. java学习笔记之基础篇

    java选择语句之switch   //switch可以用于等值判断 switch (e) //int ,或则可以自动转化成int 的类型,(byte char short)枚举jdk 7中可以防止字 ...

  10. Java IO学习笔记八:Netty入门

    作者:Grey 原文地址:Java IO学习笔记八:Netty入门 多路复用多线程方式还是有点麻烦,Netty帮我们做了封装,大大简化了编码的复杂度,接下来熟悉一下netty的基本使用. Netty+ ...

随机推荐

  1. java map的四种遍历

    四种遍历: public static void main(String[] args) { Map<String, String> map = new HashMap<String ...

  2. Java I/O模型的简单说明

    1.同步和异步 同步:如果有多个任务或者事件要发生,这些任务或者事件必须逐个地进行,一个事件或者任务的执行会导致整个流程的暂时等待,这些事件没有办法并发地执行,最简单的例子就是顺序的执行两个方法,当第 ...

  3. python(pyqt)开发环境搭建

    eric+pyqt 安装(python开发工具) 更多 0 Python python Eric是一个开源的.跨平台的python&ruby集成开发环境,基于python和pyqt运行.eri ...

  4. 深入浅出JMS(一)——JMS简介

    如果手机只能进行实时通话,没有留言和短信功能会怎么样?一个电话打过来,正好没有来得及接上,那么这个电话要传递的信息肯定就收不到了.为什么不能先将信息存下来,当用户需要查看信息的时候再去获得信息呢?伴随 ...

  5. eclipse下使用git下载和上传项目

    简单配置,填入我们的用户名和邮箱 >>Preferences>Team>Git>Configuration 点击Add Entry,在弹出框里面输入key和value的值 ...

  6. HDU 4950 Monster

    题目链接 题意:有一个怪物的血量为h,人攻击怪物,每回合可以杀掉a滴血,再回b滴血,k个回合之后人会休息一回合,即人不攻击而怪物回b滴血,问能否杀死.翻译过来就是给定一个数h,每轮可以先减a再加b,k ...

  7. Debian下查看系统版本信息命令汇总

    Debian下如何查看版本信息, 包括位数.版本信息以及CPU内核信息.CPU具体型号等等,整个CPU信息一目了然. 1.odoo@debian64:~$ uname -a(Debian查看版本当前操 ...

  8. July 3rd, Week 28th Sunday, 2016

    2016-07-03 First-hand experience is often necessary for personal growth. 亲身体验通常是成长所必须的. Although som ...

  9. Ubuntu gcc编译报错:format ‘%llu’ expects argument of type ‘long long unsigned int’, but argument 2 has type ‘__time_t’ [-Wformat=]

    平时用的都是Centos系统,今天偶然在Ubuntu下编译了一次代码,发现报错了: 源码: #include <stdio.h> #include <sys/time.h> # ...

  10. CSS3实现文字抹开特效

    CSS: .column-title { color: #9b9b9b; text-shadow: 1px 1px #d4d4d4;}.column-title:hover { color: #5a5 ...