Java中数据成员的封装

今天写了关于C++中友元函数的实验总结。想到数据成员的封装。

 

 

就像在Java中,对每个数据成员都应该声明为private。在JavaBean中更应该如此。

例如:

public class Person {

       private String name;

       private String password;

       public void setName(String name) {

              this.name = name;

       }

       public void setPassword(String password) {

              this.password = password;

       }

       public String getName() {

              return name;

       }

       public String getPassword() {

              return password;

       }

}

把所有的成员变量全部声明为private,在通过gettersetter方法来对其进行访问和修改。

 

在非JavaBean的类中,应当提供getter方法来获取属性,而对setter的提供则应该仔细的设计,也

可以说是认真的考虑。以防止破坏其对成员属性的修改。

注:

       成员属性和类属性的区别:

             

class Person {

       private String name;

       private String password;

       public void setName(String name) {

              this.name = name;

       }

       public void setPassword(String password) {

              this.password = password;

       }

       public String getName() {

              return name;

       }

       public String getPassword() {

              return password;

       }

}

 

public class TestPerson {

       private Person person;  //此处的person即为类属性

}

 

成员属性:普通的成员变量(八种基本返回类型中的一种)

类型性:返回值是类的成员变量

 

如果类中的成员方法只打算供类中的成员方法使用,而不打算作为客户类访问该类的接口,则

需要将方法声明为private,以得到将其掩藏的目的。例如Servlet中可以提供一个辅助方法processRequest()

来实现其中的doGet()方法和doPost()方法等。

例如:

import javax.servlet.*;

import javax.servlet.http.*;

import java.io.*;

 

public class ServletTest extends HttpServlet {

       public void doPost(HttpServletRequest request, HttpServletResponse response)

                     throws ServletException,IOException {

              processRequest(request,response);      

       }

       public void doGet(HttpServletRequest request, HttpServletResponse response)

                     throws ServletException,IOException {

              processRequest(request,response);      

       }

       private void processRequest(HttpServletRequest request, HttpServletResponse response) {

              //write your code

       }

}

 

 

四种访问权限的区别:

1.       private 拥有最低的访问权向,只可以被类中的成员访问

2.       默认访问权限 可以当前包中的所有类访问

3.       protected 可以被当前包以及其子类中的成员访问

4.       public 可以被所有的类访问,拥有最高的访问权限,不应该将类的成员变量声明为public

 

访问权限大小比较:

       private è 默认权限 è protected è public

 

类的封装及其掩藏:

1.       抽象方法以及接口可以实现对子类的掩藏(策略模式以及工厂模式等)

 

例如:

      

public interface Person

 

public class Man interface Person

 

public void func(Person person)

如此般,方法中提供接口,这样,就可以利用面向对象的多态性来进行对子类的掩藏以及动态绑定。

 

总结:1. 尽量只针对接口(抽象)编程,而不针对具体的类来进行编程

2.       将所有的数据成员乃至类成员都声明为private,在通过提供setter方法和getter方法来实现对
数据成员的访问和修改

3.       在有特殊需求的时候才使用抽象类,否则竟可能使用接口

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值