JavaSE入门学习13:Java面向对象之封装 - Go语言中文社区

JavaSE入门学习13:Java面向对象之封装


       一封装概述

       (1)封装的概念

       将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过类提供的方法来实现对隐藏信息的操作问。

在面向对象程式设计方法中,封装是指,一种将抽象性函式接口的实作细节部份包装、隐藏起来的方法。

       (2)封装的好处:

       A要访问该类的代码和数据,必须通过严格的接口控制,只能通过规定的方法访问数据。

       B隐藏类的实例细节,方便修改和实现,封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义

的代码随机访问。

       C封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。

       D适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。

       (3)封装的实现步骤


       A修改属性的可见性,设为private

       B创建getter方法和setter方法,用于属性的读写

       C在getter方法和setter方法中加入属性控制语句,对属性值的合法性进行判断。

       二封装实例

       (1)最常见的封装过程实例

       Test.java源代码文件代码:

<span style="font-size:18px;">public class Test{

   private String id;
   private String name; 
   private int age;

   public String getId(){
      return id;
   }
   
   public String getName(){
      return name;
   }
   
   public int getAge(){
      return age;
   }

   public void setId(String newId){
      id = newId;
   }

   public void setName(String newName){
      name = newName;
   }

   public void setAge( int newAge){
      age = newAge;
   }

 }</span>

       以上实例中public方法是外部类访问该类成员变量的入口。通常情况下,这些方法被称为getter和setter方法。因

此,任何要访问类中私有成员变量的类都要通过这些getter和setter方法。

       通过如下的代码说明Test类的变量怎样被访问:

       Run.java源代码文件代码:

<span style="font-size:18px;">public class Run{

   public static void main(String args[]){
      Test test = new Test();
	  test.setId("1234002");
      test.setName("李思思");
      test.setAge(20);
      
      System.out.print("id: " + test.getId()+",name: " + test.getName()+ ",age:"+ test.getAge());
    }
	
}</span>

       上述的两个源文件需要放置在同一个包内,运行结果:

       

      (2)加入属性控制语句的封装过程实例

       改写实例(1)的代码:

       Test.java源代码文件代码:

<span style="font-size:18px;">public class Test{

   private String id;
   private String name; 
   private int age;

   public String getId(){
      return id;
   }
   
   public String getName(){
      return name;
   }
   
   public int getAge(){
      return age;
   }

   public void setId(String newId){
      id = newId;
   }

   public void setName(String newName){
      name = newName;
   }

   public void setAge(int newAge){
	   
	  if(newAge<0||newAge>100){
		  System.out.println("你输入的年龄不合规范!");
		  //年龄默认为0
		  age = 0;
	  }else{
          age = newAge;
	  }
	  
   }

 }</span>

       Run.java源代码文件代码:

<span style="font-size:18px;">public class Run{

   public static void main(String args[]){
      Test test = new Test();
      test.setId("1234002");
      test.setName("李思思");
      test.setAge(200);
      
      System.out.print("id: " + test.getId()+",name: " + test.getName()+ ",age:"+ test.getAge());
    }
	
}</span>

       运行结果:


       如果写入的年龄是20呢,输出的结果为:


       




       

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/erlian1992/article/details/50596564
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-03-07 19:00:45
  • 阅读 ( 1157 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢