面向对象(封装)get set的由来

2023-10-19,,

封装:是指隐藏对象的属性和实现细节,进对外提供公共访问方式

好处:将变化隔离。便于使用,提高重用性,提高安全性

封装原则:将不需要对外提供的额内容隐藏起来,把属性都隐藏,提供公共方法对其访问

 package com_package2;

     class Age {
int age;
/*/ public void Haha(int t)
//{ if(t>=0)
// age=t;
else
age=0;
}
// public int getHaha(int t)
// {
// return t; // }**/
void speak()
{
System.out.println("age="+age); } }

首先注意观察:Age类中的属性age没有说公有,也没有说私有,再加上这个类也没说是私有和公有,那么这个属性是不受保护的,创建对象后,age是可以被改动也可以被访问的

但是如果age属性变成了private那么AgeDemo是无法访问到age属性的

 package com_package2;

 public class AgeDemo {
public static void main(String[]args)
{
Age a = new Age();//创建对象
//a.Haha(20);
a.age=20;//访问Age类中的年龄属性
a.speak();//访问Age类中的speak方法 } }

这里的age是不被保护的

再来看,要是想要访问private属性,那么,可以在中间加一个给属性赋值的public方法如下:

 package com_package2;

     class Age {
private int age;
public void Haha(int t)
{ age=t;
}
// public int getHaha(int t)
// {
// return t; // }
void speak()
{
System.out.println("age="+age); } }

在这里面,age是私有的其他类无法访问,但是加了一个public方法来对age属性进行赋值

 package com_package2;

 public class AgeDemo {
public static void main(String[]args)
{
Age a = new Age();
//a.Haha(20);
a.Haha(20);
a.speak(); } }

通过Haha对age进行访问得到age=20

在此基础上可以增加一点算法:

 package com_package2;

     class Age {
private int age;
public void Haha(int t)
{ if(t>=0&&t<=130)
age=t;
else
age=-1;
}
// public int getHaha(int t)
// {
// return t; // }
void speak()
{
System.out.println("age="+age); } }
 package com_package2;

 public class AgeDemo {
public static void main(String[]args)
{
Age a = new Age();
//a.Haha(20);
a.Haha(-20);
a.speak(); } }

这样就可以判断年龄的可能性  得-1

由此演变成get set方法:

 package com_package2;

     class Age {
private int age;
public void setAge(int t)
{ if(t>=0&&t<=130)
age=t;
else
age=-1;
}
public int getAge(int t)
{
return t; }
void speak()
{
System.out.println("age="+age); } }
 package com_package2;

 public class AgeDemo {
public static void main(String[]args)
{
Age a = new Age();
//a.Haha(20);
a.setAge(-20);
a.speak(); } }

这样的演变就足以说明set,get方法的由来。通常情况下,会将类中的成员变量私有化,为了避免属性直接被访问导致数据错误,并对外界听了公共的访问方式,对该

属性进行访问,这样做的好处是:可以对属性进行可控,而对属性访问的公共方法名称规范定义的格式是:set属性(),get属性()。当然get(),set()都可以在系统中手动生成。

关于这两个方法:Java中的私有属性set()是给属性赋值的,get()是取得属性值的
被设置和存取的属性一般是私有
主要是起到封装的作用,不允许直接对属性操作
set()和get()不一定同时存在,看程序需求

面向对象(封装)get set的由来的相关教程结束。

《面向对象(封装)get set的由来.doc》

下载本文的Word格式文档,以方便收藏与打印。