文章目录


面向对象的封装性(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

返回顶部