先看一个未封装的Demo案例一:

package android.java.oop03;

class Person {

    int age;

}

public class PottingDemo {

    public static void main(String[] args) {
Person person = new Person();
person.age = -200; System.out.println("年龄是:" + person.age);
} }

执行结果:

    年龄是:-200


封装后的Demo案例一:

package android.java.oop03;

class Person {

    /**
* 加入私有private,不对外暴露
*/
private int age; public void setAge(int age) { if (age < 0 || age > 200) {
throw new IllegalArgumentException("setAge age值不规范,age value:" + age);
} this.age = age;
} public int getAge() {
return age;
}
} public class PottingDemo { public static void main(String[] args) {
Person person = new Person();
person.setAge(9); System.out.println("年龄是:" + person.getAge());
} }

执行结果:

    年龄是:9


未封装的案例代码 案例二:

package android.java.oop03;

class Counter {

    int add(int number1, int number2) {
return number1 + number2;
} int jian(int number1, int number2) {
return number1 - number2;
} int cheng(int number1, int number2) {
return number1 * number2;
} int chu(int number1, int number2) {
return number1 / number2;
} void doCounter(int number1, String f, int number2) { int result; if ("+".equals(f)) {
result = add(number1, number2);
} else if ("-".equals(f)) {
result = jian(number1, number2);
} else if ("*".equals(f)) {
result = cheng(number1, number2);
} else if ("/".equals(f)) {
result = chu(number1, number2);
} else {
throw new IllegalArgumentException("传入的运算符 有异常,不能是 f" + f);
} println(result);
} void println(int result) {
System.out.println("运算的结果是:" + result);
}
} public class PottingDemo2 { public static void main(String[] args) {
Counter counter = new Counter();
counter.doCounter(8, "+" ,8);
counter.doCounter(20,"-", 10);
counter.doCounter(9, "*", 9);
counter.doCounter(100,"/",2);
} }

执行结果:

运算的结果是:16
运算的结果是:10
运算的结果是:81
运算的结果是:50

封装的案例代码 案例二:

package android.java.oop03;

class Counter {

    private int add(int number1, int number2) {
return number1 + number2;
} private int jian(int number1, int number2) {
return number1 - number2;
} private int cheng(int number1, int number2) {
return number1 * number2;
} private int chu(int number1, int number2) {
return number1 / number2;
} public void doCounter(int number1, String f, int number2) { int result; if ("+".equals(f)) {
result = add(number1, number2);
} else if ("-".equals(f)) {
result = jian(number1, number2);
} else if ("*".equals(f)) {
result = cheng(number1, number2);
} else if ("/".equals(f)) {
result = chu(number1, number2);
} else {
throw new IllegalArgumentException("传入的运算符 有异常,不能是 f" + f);
} println(result);
} private void println(int result) {
System.out.println("运算的结果是:" + result);
}
} public class PottingDemo2 { public static void main(String[] args) {
Counter counter = new Counter();
counter.doCounter(8, "+" ,8);
counter.doCounter(20,"-", 10);
counter.doCounter(9, "*", 9);
counter.doCounter(100,"/",2);
} }

执行结果:

运算的结果是:16
运算的结果是:10
运算的结果是:81
运算的结果是:50


1.封装可以自定义隐藏细节(private),自定义对外提供接口(public);

2.封装可以提高安全性,private;

3.封装可以提高复用性

举例:  

未封装的表现:把 主版,电源,这些零件全部摆放在桌子上,每次开机时,用金属物触碰主板上的开机卡槽来开机;
1.不安全,万一不小心把水倒在主板上
2.暴露了细节

封装的表现:把 主板 电源,这些零件全部用机箱封装起来(隐藏细节),对外提供暴露的接口(USB,显示器,网卡等,开机开关);
1.安全,被封装了,受保护了
2.隐藏了细节

Android-Java-封装的更多相关文章

  1. # 095 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 03 封装总结 01 封装知识点总结

    095 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...

  2. 094 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 04 static关键字(续)

    094 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...

  3. 093 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 03 static关键字(下)

    093 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...

  4. 092 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 02 static关键字(中)

    092 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...

  5. 091 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 01 static关键字(上)

    091 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...

  6. 090 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 04 使用包进行类管理(2)——导入包

    090 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...

  7. 089 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 使用包进行类管理(1)——创建包

    089 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...

  8. 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 02 封装的代码实现

    088 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 02 封装的代码实现 本文知识点:Java封装的代码实现 说明:因为时间紧张,本人写博客过程中只 ...

  9. 087 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 01 封装的概念和特点

    087 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 01 封装的概念和特点 本文知识点:封装的概念和特点 说明:因为时间紧张,本人写博客过程中只是对 ...

  10. [Android] Java Basic : preview

    基础教学:lecture, video, lecturer: Matt Stoker Java教学:http://www.runoob.com/java/java-intro.html[菜鸟教程,非常 ...

随机推荐

  1. 在nginx中,禁止IP访问.只可以使用域名访问.

    if ($host ~* "\d+\.\d+\.\d+\.\d+"){ ; } 其实说白了, 就是进行host主机头过滤,使用正则来判断下.

  2. read temperature

    button1, button2, richtexbox1, serialport1, using System;using System.Collections.Generic;using Syst ...

  3. [转]sqlmap使用教程

    sqlmap也是渗透中常用的一个注入工具,其实在注入工具方面,一个sqlmap就足够用了,只要你用的熟,秒杀各种工具,只是一个便捷性问题,sql注入另一方面就是手工党了,这个就另当别论了. 今天把我一 ...

  4. 【jquery+easyUI】-- $.messager.show 弹框显示

    三种基本弹框 1.提示框,一秒停留 $.messager.show({ title: '提示', msg: '修改成功!', showType: 'fade', //设置显示类型 style: { l ...

  5. MySQLdb与sqlalchemy的简单封装

    一:MySQLdb # !/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb import MySQLdb.cursors import co ...

  6. 用php脚本比较MySQL两个数据库的结构差异

    define('DATABASE1', 'mysql://root:password@127.0.0.1/db1'); $dbi1 = new DbMysql; $dbi1->dbh = DAT ...

  7. left join用法

    表1: Person +-------------+---------+ | 列名 | 类型 | +-------------+---------+ | PersonId | int | | Firs ...

  8. python r r+ w w+ rb 文件打开模式的区别

    # 只读模式with open ( "file.txt" ,'r' ) as f:        for line in f.readlines():                ...

  9. mybatis学习 十四 resultMap标签 一对一(联合查询)

    1.使用 resultMap 实现关联单个对象(联合查询方式) <resultMap type="Student" id="stuMap1"> &l ...

  10. php-fpm 的 pm.start_servers 参数调整

    大家注意一下 在 php-fpm 的配置文件中, pm.start_servers 必须是介于  pm.min_spare_servers 和  pm.max_spare_servers  这个值之间 ...