オブジェクト指向のカプセル化
カプセル化の利点:
- 1.カプセル化後、そのことについては、物事のより複雑な側面を見ることができず、物事の単純な側面だけを見ることができます。複雑さのカプセル化により、簡単な操作の入り口が提供されます。カメラは良い例です。カメラの実現原理はもっと複雑ですが、カメラを使う人にとってはとても便利です。また、テレビもパッケージ化されているように、テレビのメモリ実装は非常に複雑ですが、ユーザーは内部実装の原則を気にする必要はなく、リモコンを操作するだけで済みます。
- 2.カプセル化後、実際の「オブジェクト」と実際の「独立したボディ」が形成されます。
- 3.カプセル化とは、将来のプログラムを再利用できることを意味します。そして、これはより適応性があり、あらゆる状況で使用できるはずです。【再利用性】
- 4.カプセル化後、モノ自体のセキュリティが向上します[高セキュリティレベル]
カプセル化の手順:
1.すべての属性が民営化され、privateキーワードが変更に使用されます。Privateはプライベートを意味し、変更されたすべてのデータはこのクラスでのみアクセスできます。
2.外部への簡単な操作の入り口を提供します。つまり、外部プログラムが年齢属性にアクセスする場合は、次の簡単な入り口からアクセスする必要があります。
- setメソッドとgetメソッドの2つのパブリックメソッドを提供します
- age属性を変更するには、setメソッドを呼び出します
- age属性を読み取るには、getメソッドを呼び出します
3. setメソッドの命名規則:public void set + 属性名首字母大写(形参){ };
public void setAge(int a){
age = a;
}
4. getメソッドの命名規則:public 返回值类型 get + 属性名首字母大写(形参){ };
public int getAge(){
return age;
}
5.覚えておく必要があります:
- setterメソッドとgetterメソッドには静的キーワードがありません
- staticキーワードで変更されたメソッドを呼び出す方法は?
类名.方法名(实参);
- 静的なキーワード変更なしでメソッドを呼び出す方法は?
引用.方法名(实参);
例:
public class UserTest
{
public static void main(String[] args){
User user =new User();
//编译报错,age属性私有化,在外部程序中不能直接访问
//从此之后age属性非常的安全,但是有点太安全了。
//对于目前程序来说,age属性彻底在外部访问不到了。
//System.out.println(user.age);
//修改
user.setAge(-100);//对不起,您提供的年龄不合法
//读取
System.out.println(user.getAge());//0
}
}
public class User
{
//属性私有化
private int age;
}
public void setAge(int a){
//编写业务逻辑代码进行安全控制
//age = a;
if(a<0||a>150){
System.out.println("对不起,您提供的年龄不合法");
return;
}
//程序可以进行到这里的话,说明a是合法的,则进行赋值运算
age = a;
}
public int getAge(){
return age;
}