我们做任何事都是不断积累经验,慢慢发现更好的方法来处理某一类问题。程序设计也是如此,我们现在所熟知的一些概念的由来也都是前辈程序员在从事软件开发活动中经验的累计。
如果我们在学习程序设计前并不知道函数的概念,只是按顺序的执行指令。代码写久了就一定想,为什么我要反复的敲打处理同一逻辑功能的这段代码呢?!而且,这个一段逻辑处理在整个程序中用到了多次,当它的逻辑需要改变的时候,我得分别找到这些代码段并修改。更糟糕的是,你很容易就落掉一处,留下bug。
前人也别这样的问题困扰,所以将这些功能一致的逻辑代码放到了一起,也就有了函数的概念。
这个概念慢慢演变和发展,后来就成了程序设计的准则之一。程序设计要尽可能地间接,不要让同一段逻辑出现在两处。
我们都知道封装是面向对象程序设计中的重要概念。Java中是通过private和protected访问修饰符来限定外部世界对类中的成员和方法的可见性类实现封装的。
1. 将属性封装
属性是变量,变量就是一段内存空间中所容纳的数据。如果外部类是到这个变量的存在并且可以访问这个变量,那它们就可以对这个变量随便赋值。而这不是我们想要的,这个属性是属于我们自己定义的类的,只有我们才知道它可以是什么样的值。即使外部可以对它赋值,我们要对这个将要赋给我们自己的属性的值进行合法性检测。
2. 将方法封装
外部不知道我们有这样的方法,这个方法是私有的,是我们属于我们自己的。我们在需要的时候修改逻辑。就像我们到饭店吃饭,通过代理(服务员)向厨师发了消息。厨师对外暴露一个做菜的这个方法公外界呼叫(传入菜名),但是具体怎么做,是他自己的事,我们外界并看不到这些方法而只关心我们知道的方法的返回值。
下面是代码演示:
package org.vhow.java.basic;
public class MyClass
{
// Make the field invisible to other classed to avoid they change it, or
// assign invalid value to it.
private String myField;
// Add a public method to let others can assign value to it.
// we can add some logic here.
public void setMyField(String str)
{
// My logic here. e.g. I can judge if the value to be assigned to
// my field is valid or not.
if (str.length() > 10)
{
this.myField = str.substring(0, 10);
}
else
{
this.myField = str;
}
}
// Other classes can not see this method, so, you can change it as you want.
private String myLogicMethod()
{
return this.myField;
}
// Since the other classes may use this method, i can not change it once
// it is published.
public String exposedMethod()
{
return this.myLogicMethod();
}
}
package org.vhow.java.basic;
public class AppMain
{
public static void main(String[] args)
{
MyClass myObject = new MyClass();
myObject.setMyField("abcdefghijklmnopqrstuvwxyz");
String str = myObject.exposedMethod();
System.out.println(str);
}
}
分享到:
相关推荐
Educoder题目:Java面向对象 - 封装、继承和多态答案解析
Educoder题目:Java面向对象 - 封装、继承和多态的综合练习答案解析
axios 面向对象封装 可以多实例调用
本页面提供面向对象单例封装mysqli数据库 面向对象单例封装mysqli数据库 确定可用
OOP面向对象的封装有关面试
java面向对象三要素封装继承和多态源码java面向对象三要素封装继承和多态源码java面向对象三要素封装继承和多态源码java面向对象三要素封装继承和多态源码java面向对象三要素封装继承和多态源码java面向对象三要素...
c#面向对象——封装
对lua面向对象简单封装-原文地址:https://blog.csdn.net/wuliping118/article/details/81435814
掌握类的封装特性、构造方法的定义、重载以及this和static关键字的使用 熟悉面向对象 的三大特征 掌握类与对象的创建和使用
C#面向对象编程封装习题.pdf
labview面向对象封装的视觉函数oop
Lua面向对象封装好的基类Class
【C语言】C语言实现面向对象编程之封装代码.,完整的代码,可以在Linux和VS环境运行。【C语言】C语言实现面向对象编程之封装代码.rar
Lua的面向对象封装 LuaOO是Lua C API使用C++语言的面向对象封装。LuaOO是在lua原有的API基础之上扩展而来,极少地修改lua源码,主要是通过扩展lua原来的代码。扩展lua与C++环境交互。因此当有新版本的lua源码发布时...
面向对象之封装.xmind
JAVA面向对象基础测试题-继承-封装-多态等测试题.docx
php初级编程的例子,面向对象的封装很适合初学者的,希望对大家有所帮助
面向对象之封装的题目及源码
java封装是什么?Java面向对象的封装.docx
面向对象的简、由类创建一个对象的方法、类的编写与对象的创建、类的构造函数、类的方法、修饰符、Java中的封装/继承/多态等特征、Java中的线程、用Java创建一个小世界、多线程共享数据,以及面向对象中的各种设计...