1.什么是封装

1.1概念

将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。主要是类的属性

1.2好处

a.只能通过规定的方法访问数据
b.隐藏类的实例细节,方便修改和实现

1.3封装的实现步骤

1.修改属性的可见性:

设为private

2.创建getter/setter方法

用于属性的读写

3.在getter/setter方法中加入属性控制语句

对属性值的合法性进行判断

 public class HelloWorld{
private String name = "rocco";
private int age = 18;
//属性赋值
public void setName(String name) {
this.name = name;
}
//属性值查询
public int getAge() {
return age;
} public static void main(String[] args) {
HelloWorld hello = new HelloWorld();
System.out.println(hello.getAge()); }
}

2.如何使用包管理Java中的类

1.包的作用:

管理Java文件
解决同名文件冲突

2.定义包:package包名

注:必须放在Java源程序的第一行,包名间可以使用”.”号隔开
eg:com.imooc.MyClass

3.系统中的包

java.(功能).(类)
java.lang.(类) 包含java语言基础的类
java.util.(类) 包含java语言中各种工具类
java.io.(类) 包含输入、输出相关功能的类

4.包的使用

(1)可以通过import关键字,在某个文件使用其他文件>中的类
import com.imooc.music.MyClass
(2)java中,包的命名规范是全小写字母拼写
(3)使用的时候不但可以加载某个包下的所有文件
eg:com.imooc.
也可以加载某个具体子包的所有文件
eg:com.imooc.mudic.

3.Java中的访问修饰符

1.什么是访问修饰符
访问修饰符是用来限制类属性和方法的访问范围的
2.有哪些访问修饰符
常见的访问修饰符有4中,包括一个什么都不写,缺省的状态:private,默认,proteccted, public
3.修饰符的访问限制

4.this关键字

1.this关键字代表当前对象
this.属性 操作当前对象的属性
this.方法 调用当前对象的方法
注意是当前对象哦
2.封装对象的属性的时候,经常会使用this关键字

5.什么是Java中的内部类

1.什么是内部类:
将一个类定义在另一个类里面,既是在一个类里面再定义一个类,此时,外面的类叫外部类,里面的类叫内部类
2.内部类的作用:
a.内部类提供更好的封装,这样就允许同一个包中的其他类访问这个内部类
b.内部类可以直接调用外部类的去所有数据,包括私有数据
c.外部类也可以实现同样的功能,但是使用内部类更方便一些
3.内部类有几种:

成员内部类 静态内部类
方法内部类 匿名内部类

 //外部类HelloWorld
public class HelloWorld { // 内部类Inner,类Inner在类HelloWorld的内部
public class Inner { // 内部类的方法
public void show() {
System.out.println("welcome to imooc!");
}
} public static void main(String[] args) { // 创建外部类对象
HelloWorld hello = new HelloWorld();
// 创建内部类对象
Inner i = hello.new Inner();
// 调用内部类对象的方法
i.show();
}
}

6.Java中的成员内部类

成员内部类是最常用的内部类,这个类通常放在类中变量的位置,所以叫做成员内部类
成员内部类的使用方法:
1.成员内部类可以访问外部类的任意访问控制符,如:public,protected,public等
2.内部类可以直接访问外部类中的数据,外部类一个变量name,内部类调用直接就是name
3.实例化内部类的方法不一样,需要使用外部类.new方法:内部类 对象名 = 外部类对象.new 内部类()
就是说需要先创建一个外部类对象,然后根据外部类对象.new 来创建内部类
4.编译之后有两个.class文件
外部类的编译文件Outer.class
内部类的编译文件Outer$Inner.class
另外需要注意的地方:
1.内部类能直接调用外部类的数据,但是外部类不能直接调用内部类的数据,需要先创建一个内部类对象,然后通过对象调用
Outer o = new Outer();
Inner i = o.new Inner();
2.当内部类和外部类有相同的属性或者方法时,内部类默认会调用内部类的属性和方法,如果是调用外部类,需要这样调用:Outer.this.name,内部内还是直接用name调用

7.Java中的静态内部类

静态内部类是在内部类前加static修饰,这种内部类的特点是:
1.内部静态类不能直接访问外部的非静态数据,如果需要访问外部数据,可以使用

new 外部类().成员

的方法来访问外部非静态成员,如果是外部静态成员,可以直接访问的
2.如果存在外部静态成员和内部静态成员,则需要通过”类名.静态成员”来访问。如果要访问外部或者内部的静态成员,只需要直接调用成员的名字就可以了
3.创建内部静态类的对象的时候,不需要额外创建外部类的对象,可以直接通过

内部类 对象名 = new 内部类();

8.Java中的方法内部类

什么是方法内部类呢?
就是这个内部类是在外部类的一个方法中定义的,定义之后,这个内部类就属于这个方法的私有类,就只能在这个方法中调用,出了这个方法,在任何地方都不能调用,即使是在同一个类中
例子:

 //外部类
public class HelloWorld { private String name = "爱慕课"; // 外部类中的show方法
public void show() {
// 定义方法内部类
class MInner {
int score = 83;
public int getScore() {
return score + 10;
}
} // 创建方法内部类的对象
MInner mi = new MInner(); // 调用内部类的方法
int newScore= mi.getScore(); System.out.println("姓名:" + name + "\n加分后的成绩:" + newScore);
} // 测试方法内部类
public static void main(String[] args) { // 创建外部类的对象
HelloWorld mo = new HelloWorld(); // 调用外部类的方法
mo.show();
}
}

第8章 Java类的三大特性之一:封装的更多相关文章

  1. 第9章 Java类的三大特性之一:继承

    1.什么是继承 子类继承父类就是对父类的扩展,继承时会自动拥有父类所拥有的处private之外的所有成员作用:增加代码复用语法格式: class 子类名 extends 父类名{…………}第9章 Ja ...

  2. 第10章 Java类的三大特性之一:多态

    1.Java中的多态 多态是指对象的多种形态,主要包括这两种: 1.1引用多态 a.父类的引用可以指向本类的对象b.父类的引用可以指向子类的对象举个例子:父类Anmail,子类Dog,可以使用父类An ...

  3. JAVA 类的三大特性,封装,继承,多态 的一些发现总结

    < 一 > 封装 < 二 > 继承 1,关于父类中的私有属性和方法,子类能不能访问的问题 1.1,子类不能通过继承拥有父类的私有属性和方法 1.2,子类可以从父类继承下来的 方 ...

  4. (转载)OC学习篇之---类的三大特性:封装,继承,多态

    之前的一片文章介绍了OC中类的初始化方法和点语法的使用,今天来继续学习OC中的类的三大特性,我们在学习Java的时候都知道,类有三大特性:继承,封装,多态,这个也是介绍类的时候,必须提到的话题,那么今 ...

  5. Java学习笔记十八:Java面向对象的三大特性之封装

    Java面向对象的三大特性之封装 一:面向对象的三大特性: 封装 继承 多态   二:封装的概念: 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访 ...

  6. JAVA基础——面向对象三大特性:封装、继承、多态

    JAVA面向对象三大特性详解 一.封装 1.概念: 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问. 2.好处: 只能通过规定的方法访问数据. ...

  7. Java中的三大特性:封装、继承、多态

    封装: 概念:封装可以被认为是一个保护屏障,防止该类的代码和数据被其他类随意访问,适当的封装可以让代码更容易理解与维护,也加强了代码的安全性. 原则:将属性隐藏起来,若需要访问某个属性,提供公共方法对 ...

  8. 1.java面向对象编程三大特性之封装

    封装即把一个对象的属性.行为等放在一个实体类中隐藏起来,不允许外部对其进行修改,但是被封装的属性.行为会对外提供一个接口与外部联系,这个对外的接口通常情况下就是set().get()方法.可以通过se ...

  9. (09)-Python3之--类的三大特性(封装、继承、多态)

    1.封装 封装,就是只能在类的内部访问,外部访问属性或方法会报异常,python中的封装很简单,只要在属性前或者方法名前加上两个下划线就可以,如self.__name,def __eat(self)这 ...

随机推荐

  1. ipsec IP安全策略操作 win7

    //禁止 win7 连接 public static void BannedWINRunCmd() { string str = Console.ReadLine(); System.Diagnost ...

  2. FactoryMethodPattern(工厂方法)

    /** * 工厂方法模式 * 分为四部分 * 1.产品接口 * 2.产品实例 * 3.工厂接口 * 4.工厂实例 * 工厂类最好用单例模式,但在这里主要是说明工厂方法,就不用单例了 * @author ...

  3. 哈哈:sqlserver2008附加数据库时操作系统错误5(拒绝访问)错误5012的解决办法

    老师说:无论干什么,出错了,先大笑三声.如果人多了,在心里也要大笑三声.哈哈哈!!! 刚刚重装系统完后,然后想学习.自己去安装sqlserver2008数据库,完之后想附加之前的数据库.可是当我一点确 ...

  4. CSS3 莲花盛开动画

    点击这里查看效果:http://keleyi.com/a/bjad/32gxxsaw.htm 或者:http://keleyi.com/keleyi/phtml/css3/10a.htm 效果图: 代 ...

  5. 征友记之---前端开发Partner

                                                       简单自述下: 本人前端开发者,深圳一公司在职员工,非出自前端科班,乃自学前端已近两年之久. 受前端 ...

  6. android TextView多行文本(超过3行)使用ellipsize="end"属性无效问题的解决方法

    <TextView android:id="@+id/desc" android:layout_width="match_parent" android: ...

  7. OpenGL渲染流程

    一.什么是openGL OpenGL被定义为“图形硬件的一种软件接口”.从本质上说,它是一个3D图形和模型库,具有高度的可移植性,具有非常快的速度. 二.管线 管线这个术语描述了opengl渲染的整个 ...

  8. 【原】设置iOS项目BuildVersion自动增加

    一.概念阐述:Build与Version的区别 在iOS中有两种“版本号”,也就是所谓的version号与build号,如下图所示: 我们用最简洁的语言来区分这两个版本号的区别以及用途如下: Vers ...

  9. iOS开发 适配iOS10以及Xcode8[转]

    现在在苹果的官网上,我们已经可以下载到Xcode8的GM版本了,加上9.14日凌晨,苹果就要正式推出iOS10系统的推送了,在此之际,iOS10的适配已经迫在眉睫啦,不知道Xcode8 beat版本, ...

  10. TextInputLayout setError() setErrorEnable()

    public void afterTextChanged(Editable s) { if (textInputLayout.getEditText().getText().toString().le ...