【Java】面向对象.封装性
原创
©著作权归作者所有:来自51CTO博客作者阿呆小记的原创作品,请联系作者获取转载授权,否则将追究法律责任
文章目录
面向对象的封装性(private 私有化)
一、封装基本概念
1.封装的好处
- 封装之后只能看到事物的简单一面,看不见他的复杂一面。复杂性封装,对外提供简单的操作入口,例如:照相机
原理复杂,操作简单。
2.封装后才会形成“封装”的“对象",形成“独立体”。
3.封装意味着以后可以重复使用;并且适应性较强,可以在任何场所使用。
4.封装之后对于独立体来说提高了安全性。
5.特点:
- 1.所有的属性私有化 private
- 2.修饰所有的属性只能在本类中使用
- 3.对外提供简单的操作入口,也就是说在以后外部想要调用这些属性的时候必须通过入口 - 对外提供两个方法 set、get - 一个属性两个方法
6.命名规范
// set方法命名规范
public void setAge(int a){
age = a;
}
// get方法命名规范
public int getAge(){
return age;
}
//getter、setter方法没有static关键字
7.封装的使用
- 没有
static关键字
的方法调用:引用.方法名(实参)
; - 有
static关键字
的方法调用:类名.方法名(实参)
; - 通常属性的访问形式: 读取 - 修改
返回顶部
二、一般封装
package 封装性;
public class User {
// 属性私有化
private int age;
public User(){
System.out.println("dddddddd");
}
//User()方法重载
public User(int i){
System.out.println("带int的构造器");
}
//User()方法重载
public User(int i,String name){
System.out.println("带int和String的构造器");
}
public void setAge(int a) {
if( a < 0 || a > 150){
System.out.println("对不起,年龄不合法。");
return;
}
age = a;
}
public int getAge() {
return age;
}
}
public class method {
/**
* @param args
*/
public static void main(String[]) {
// TODO Auto-generated method stub
User u = new User();
u.setAge(-150);
System.out.println(u.getAge());
}
}
结果:
dddddddd
对不起,年龄不合法。
0
返回顶部
三、封装内、外类
package 封装;
//创建外部类
public class Outer {
// 外部类的私有属性
private int a = 99;
int b = 99;
// 创建内部类
public class Inner {
// 内部类的成员属性
int b = 100;
// 创建内部类方法
public void show() {
System.out.println("访问外部类的a:" + a);
System.out.println("访问内部类的b:" + b);
//当内部类与外部类有相同的成员变量或方法时,默认访问内部的,
//若要显示外部的,使用 外部类名.this关键字.变量名/方法。
System.out.println("访问外部类的b:"+Outer.this.b);
// 外部类名.this.变量/方法
System.out.println("\n1");
}
}
//在外部类调用内部类的方法时要先创建内部类的方法
public void test() {
// 创建内部类的对象
Inner i = new Inner();
// 调用内部类的方法
i.show();
System.out.println("外部变量:"+b);
//当外部类与内部类有相同的成员变量或方法时,默认访问外部的,
//若要显示内部的,同样是属于在外部类调用内部类的属性时要先创建内部类的方法,再加this关键字。
System.out.println("内部变量:"+i.b);
}
/**
* @param args
*/
public static void main(String[]) {
// TODO Auto-generated method stub
// 创建外部类的对象
Outer o = new Outer();
// 创建内部类的对象
Inner i = o.new Inner();
o.test();
// 调用内部类的方法
i.show();
}
}
结果:
访问外部类的a:99
访问内部类的b:100
访问外部类的b:99
1
外部变量:99
内部变量:100
访问外部类的a:99
访问内部类的b:100
访问外部类的b:99
1
返回顶部