面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想。

如何判断一个语言是面向对象的编程语言呢,主要依据就看它有没有 封装,继承和多态

然而这可能是让所有编程初学者最先困惑的地方吧,“卧槽!?什么是面向对象,我还没有对象呢!”

这篇文章用我自己理解的方式,用最简单易懂的例子解释一下封装,继承和多态,方便初学者理解这些概念,也加深一下我对概念的理解和记忆,以防忘记。(反正我是看不懂教材里面写的无聊的概念)

 

首先解释一下封装。

程序为什么要封装呢,是因为做好的程序只需要向用户提供功能,而不需要展示细节。

第一使程序更加便捷,其次也增加了安全性和稳定性。

打个比方,比如说插排,我们把电路封装在插排里,只留几个入口给你插插销用就好了,用户不需要知道里面是什么样子的,

而且让你乱碰里面还容易被电死。

用代码来说明一下:

[sourcecode language="java"]
public class Demo {
public static void main(String [] args) {
People xiaoming = new People();
xiaoming.age = -500;
xiaoming.speak();
}

}

class People{
int age;
public void speak() {
System.out.println("我今年"+age+"岁了。");
}
}

[/sourcecode]

 

我们创建一个叫People 的类,这个类只有一个属性就是年龄age,还有一个说出自己年龄的方法speak。

然后我们创建一个叫xiaoming的对象,给xiaoming年龄赋值负的500

程序编译执行是没有问题的,但是人类年龄是不可能有负数的,为了防止用户输入非法数据,所以我们要把这个属性隐藏起来

然后只给用户提供一个修改数据的方法就可以了

那就是private,私有的值只能在本类里面使用,这样数据就隐藏起来了,那我们怎么给对象赋值呢

java给我们提供了一种规范,那就是提供一个公共的public方法 getter和setter

(这里只是简单介绍一下封装的思想,封装的方法并不只局限于一种)

这个方法的好处就是,我们可以给赋值的操作加入条件,防止用户乱输入数据:

[sourcecode language="java"]
public class Demo {
public static void main(String[] args) {
People xiaoming = new People();
xiaoming.setAge(-500);
}
}

class People {

public int getAge() {
return age;
}
public void setAge(int age) {
if (this.age > 0 && this.age < 130) {
this.age = age;
System.out.println("我今年" + this.age + "岁了。");
} else {
System.out.println("请输入正确的人类年龄。");
}
}
}

[/sourcecode]

 

这样做还有一个好处就是,我们可以把数据设置成只读的,我们只提供getter方法的话,

用户只能访问事先设定好的值,而不能自己设定值。

[sourcecode language="java"]
public class Demo {
public static void main(String[] args) {
People xiaoming = new People();
System.out.println(xiaoming.getAge());
}
}

class People {
private int age = 50;

public int getAge() {
return age;
}

}
[/sourcecode]

这样输出的结果是50,而不能修改年龄的数据,只能访问。

 

*(纯手打,更新比较慢,有时间再写一下继承,并且写一下java和python对于继承的不同)

 

https://www.cnblogs.com/astropeak/p/7229508.html


如果支付遇到问题,请联系我们
Weixin1:Aburauru Weixin2:wanglanyy QQ:95387119
Last modification:September 12, 2018
如果觉得我的文章对你有用,请随意赞赏,点赞也是鼓励!