Java入门(二)java中的封装
2017/9/26
by
CHENJING DING
CHAPTER 2 – java中的封装
面向对象的三大特性:
封装,继承,多态;
封装
定义
将该类的某些信息隐藏在类的内部,不允许外部程序直接访问,必须通过该类提供的方法来实现对隐藏信息的操作和访问
步骤
1. 将成员变量的修饰符设为private
2. 创建public getter/setter方法用于属性的读写;
3. 在getter/setter方法中加入属性的控制语句,对属性的合法值进行判断;
Java中的包
解决同名文件冲突,不同的包区分相同类名的java文件
定义
Package 包名
1. 必须放在java源程序第一行
2. 包名间可以使用“.”隔开,比如系统中包:Java.功能.类
Java.lang.类:包含java语言基础的类
Java.util.类:包含java语言中各种工具类
Java.io.类:包含输入,输出相关功能的类
3. 包的命名规范是全小写字母拼音
使用
Import 包名;
Import 包名.*;// 导入该包子目录下的所有java类
Java中的访问修饰符
访问修饰符是修饰属性和方法的访问范围
Java中的this关键字
this 表示当前对象;this.属性访问当前对象的属性;
Java中的内部类
内部类( Inner Class )就是定义在另外一个类里面的类。与之对应,包含内部类的类被称为外部类。
使用内部类的原因
1. 内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类。
2. 内部类的方法可以直接访问外部类的所有数据,包括私有的数据
3. 内部类所实现的功能使用外部类同样可以实现,只是有时使用内部类更方便
内部类的种类
可分为4种,成员内部类,静态内部类,方法内部类,匿名内部类;
成员内部类
1. 内部类可以直接访问外部类中的数据,而不受访问控制符的影响,如直接访问外部类中的私有属性;
2. 定义了成员内部类后,必须使用外部类对象来创建内部类对象,而不能直接去 new 一个内部类对象,即:内部类 对象名 = 外部类对象.new 内部类( );见下面的程序1;
3. 外部类不能直接使用内部类的成员和方法,需要创建内部类的对象,然后通过内部类的对象来访问其内部类的成员变量和方法;
4. 如果外部类和内部类具有相同的成员变量或方法,内部类默认访问自己的成员变量或方法,如果要访问外部类的成员变量,可以使用 this 关键字。见下面的程序2;
//程序1 :外部类HelloWorld
publicclass HelloWorld {
// 内部类Inner,类Inner在类HelloWorld的内部
publicclass Inner {
// 内部类的方法
publicvoid show() {
System.out.println("welcometo imooc!");
}
}
publicstatic void main(String[] args) {
// 创建外部类对象
HelloWorldhello = new HelloWorld();
// 创建内部类对象
Inneri = hello.new Inner();
// 调用内部类对象的方法
i.show();
}
}
//程序2:
静态内部类
静态内部类是 static 修饰的内部类;
与前文中提到的静态方法类似:
1. 静态内部类不能直接访问外部类的非静态成员,需要通过外部类的对象来访问;
2. 如果外部类的静态成员与内部类的成员名称相同,可通过“类名.静态成员”访问外部类的静态成员;如果外部类的静态成员与内部类的成员名称不相同,则可通过“成员名”直接调用外部类的静态成员;
3. 创建静态内部类的对象时,不需要外部类的对象,可以直接创建;
内部类 对象名 = new 内部类();
方法内部类
内部类定义在“外部类的方法”中;
1.只在该方法中可见
2.不能使用访问控制符和static修饰符;