码迷,mamicode.com
首页 > 编程语言 > 详细

Java 封装

时间:2020-09-10 22:36:07      阅读:40      评论:0      收藏:0      [点我收藏+]

标签:对象   多态   xxx   动作   属性   play   one   表示   splay   

面向对象的三大特征

  封装,继承,多态;  有了封装,才能继承,有了继承,才能说多态

封装

  1、什么是封装?有什么作用

    1.1、保证内部结构的安全性。

    1.2、屏蔽复杂,暴露简单 

     比如不允许直接更新,通过方法更新,在方法内可以检验

  2、怎么封装?

    2.1  通过属性 私有化 (private)

    2.2  1个属性对外提供两个set和get方法。外部程序只能通过set方法修改,只能通过get方法读,

      可以在set方法中设立关卡来保证数据的安全性。

  3、static 和 空指针异常

    3.1  static 和 没有static 的方法

      带有static的方法,通过 “类名.” 的方式访问;只有带static 的,才能通过 类名.

      没有带有static 的方法 被称为实例方法。通过先new对象,然后 用 "引用." 的方式调用(对象方法,必须有一个对象)

       3.2  空指针异常

      方法如果没有static, 是实例方法, 调用是必须有对象的存在。    

      技术图片
 1 /*
 2 空指针异常导致的最本质的原因是?
 3     空引用访问“实例相关的数据”,会出现空指针异常。
 4 
 5     实例相关的包括:实例变量 + 实例方法。
 6 */
 7 public class NullPointerTest{
 8     public static void main(String[] args){
 9         User u = new User();
10         System.out.println(u.id); // 0
11         u.doSome();
12 
13         // 引用变成空null
14         u = null;
15 
16         // id的访问,需要对象的存在。
17         //System.out.println(u.id); // 空指针异常
18 
19         // 一个实例方法的调用也必须有对象的存在。
20         //u.doSome(); // 空指针异常。
21     }
22 }
23 
24 
25 // 类 = 属性 + 方法
26 // 属性描述状态
27 // 方法描述行为动作
28 class User{
29 
30     // 实例变量
31     int id;
32 
33     // 实例方法(对象相关的方法,对象级别的方法,应该是一个对象级别的行为。)
34     // 方法模拟的是对象的行为动作。
35     public void doSome(){
36         System.out.println("do some!");
37     }
38 
39     // 考试的行为,由于每一个人考试之后的分数不一样,所以考试行为应该必须有对象的参与。
40     public void exam(){
41         
42     }
43 }
View Code

  4、set 和 get 方法

    封装的第二步:对外提供公开的set方法和get方法作为操作入口。并且都不带static。都是实例方法。  

    get方法的要求:
      public 返回值类型 get+属性名首字母大写(无参){
        return xxx;
      }

    set 方法的要求

      public void set+属性名首字母大写(有1个参数){
        xxx = 参数;
      }

    

 1 public class Person{
 2     // private 表示私有的,被这个关键字修饰之后,该数据只能在本类中访问。
 3     // 出了这个类,age属性就无法访问了。私有的。
 4     private int age; // 每一个人年龄值不同,对象级别的属性。
 5 
 6     // 对外提供简单的访问入口(电视机的遥控器就相当于是电视机的访问入口,简单明了。)
 7     // 外部程序只能通过调用以下的代码来完成访问
 8     // 思考:你应该对外提供几个访问入口?
 9     // 思考:这些操作入口是否应该是方法呢?
10     // 写一个方法专门来完成读。(get)
11     // 写一个方法专门来完成写。(set)
12     // get和set方法应该带有static,还是不应该有static,get和set方法应该定义为实例方法吗?
13     // get读年龄,set改年龄,这个读和改都是操作的一个对象的年龄。(没有对象何来年龄)
14     // 封装的第二步:对外提供公开的set方法和get方法作为操作入口。并且都不带static。都是实例方法。
15 
16     // get方法
17     public int getAge(){
18         return age;
19     }
20 
21     // set方法
22     public void setAge(int nianLing){
23         // 能不能在这个位置上设置关卡!!!!
24         if(nianLing < 0 || nianLing > 150){
25             System.out.println("对不起,年龄值不合法,请重新赋值!");
26             return; //直接终止程序的执行。
27         }
28         //程序能够执行到这里,说明年龄一定是合法的。
29         age = nianLing;
30     }
31 
32 }

  

Java 封装

标签:对象   多态   xxx   动作   属性   play   one   表示   splay   

原文地址:https://www.cnblogs.com/zhangbl55666/p/13583526.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!