菜单

Java面向对象之封装 入门实例(一)

2018年11月15日 - jQuery

平等、基础概念

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

一如既往封闭装概述

(1)封装的定义

将类的一点信息隐藏在类似里,不同意外部程序直接看,而是通过类似提供的计来实现对藏身信息之操作问。

当面向对象程式设计方法被,封装是凭,一栽将抽象性函式接口的实作细节部份包装、隐藏起来的法子。

(2)封装的益处:

A要顾该类的代码和数量,必须经从严的接口控制,只能通过规定的方访问数。

B隐藏类的实例细节,方便修改及实现,封装好叫当是一个护卫屏障,防止此类的代码和数码为外表类定义

的代码随机走访。

C封装最要紧的功效在我们会改改好的落实代码,而未用修改那些调用我们代码的程序片段。

D适当的包装好吃程式码更便于掌握与维护,也增强了程式码的安全性。

(3)封装的兑现步骤

图片 1

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

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

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

其次封闭装实例

(1)最广的包装过程实例

Test.java源代码文件代码:

 

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;
   }

 }

 

以上实例中public方法是外表类看该类成员变量的进口。通常状态下,这些方法给誉为getter和setter方法。因

这,任何要拜访类吃个人成员变量的类似都使经这些getter和setter方法。

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

Run.java源代码文件代码:

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());
    }

}

上述的点滴单来自文件要停放于同一个包内,运行结果:

图片 2

(2)加入性决定语句的包过程实例

改写实例(1)的代码:

Test.java源代码文件代码:

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;
   }

   }

 }

Run.java源代码文件代码:

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());
    }

}

运转结果:

图片 3

若果写副的年是20啊,输出的结果为:

图片 4

http://www.bkjia.com/Javabc/1097700.htmlwww.bkjia.comtruehttp://www.bkjia.com/Javabc/1097700.htmlTechArticleJavaSE入门学习13:Java面向对象之封装 一封闭装概述
(1)封装的定义
将类的一点信息隐藏于近似中,不同意外部程序直接访问,而是经类似提供…

  (一)面向对象的老三大特色:      1.封装         2.继续         
3.多态

  (二)封装:隐藏实现细节,对外提供公共的拜会方式(接口)。

     封装的体现之一:将性能都私有化,对外提供对应的  setXXX   
getXXX  方法来做客。

     封装的功利:

          1.加强安全性。不容许直接访问细节。并经官的点子来走访,实现可控。

          2.增长了易用性。

          3.加强了复用性。

          4.隔离的变化。后期应用为分层设计。

亚、实例代码

  要求用私有化进行打包将Person的年华打印出。

 1 class Person
 2 {
 3     private int age;
 4     //对私有的数据,可以通过方法的方式对其进行访问。
 5     public void setAge(int a)
 6     {
 7         //可以对数据进行控制。
 8         if(a<0 || a>130){
 9             throw new RuntimeException(a+"数值的错误的");    //抛出异常
10             }else{
11                 age = a;
12             }
13         }
14     
15     public int getAge()    {
16         return age;
17     }
18     void speak(){
19         System.out.println("age="+age);
20     }
21     
22 }
23     
24 class PersonDemo
25 {
26     public static void main (String[] args){
27         //创建Person的对象,调用Person的属性和行为。
28         Person p = new Person();
29         p.setAge(20);
30         p.speak();
31     }
32 }

其三、代码运行

  如果对Java代码进行编译时起编码GBK的不可映射字符的题目经常,应该利用-encoding参数指明编码方式:javac
-encoding UTF-8 XX.java

  1.输入指令:javac -encoding UTF-8 PersonDemo.java   
(编译PersonDemo文件中之代码)

  2.输入指令:java PersonDemo  (执行PersonDemo文件中的代码)

  图片 5

 

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图