会写这篇文章,也是因为一个商院小伙子问我的,于是就写了此文,希望他能明白。(正经脸)
要想理解面向对象,首先得知道什么是对象。有句话你也许曾听过,那就是...
万物皆对象
先举个简单的例子,比如你早上出门到学校要做一系列的准备。用面向过程的语言编写的话就是...
void main(){
getUp();//起床
brushTeeth();//刷牙
haveBreakfast();//吃早饭
}
而如果用面向对象的思想来写代码。
import Human;//从某个地方导入人类这个类
主函数{
//从人类这个类中具体化一个人比如小李
Human XiaoLi = new Human();
XiaoLi.getUp();
XiaoLi.brushTeeth();
XiaoLi.haveBreakfast();
}
从上面的代码可能还看不出面向对象的优越性,所以下面从面向对象的三大特性来看。
1.继承
所谓继承,就是子类继承父类的属性和方法。就比如说我们要描述小李会写论文,但不是所有的人类都会写论文,那我们怎么生成小李这个对象呢?我们可以再创一个新的类。
但再重新写一个类实在太麻烦了,所有就有了继承。我们让大学生这个类,继承人类的所有特性,然后在其基础上再增加写论文这个方法就ok了。
public class Students extends Human{
增加一个写论文的方法;
}
主函数{
Students XiaoLi = new Students();
XiaoLi.写论文();
}
2.封装
所谓封装,是为了保护对象私有属性不被乱改。举个例子,现在我们模拟银行ATM机。你有一张卡,卡上的money就是私有属性。私有属性就是这个属性只能被类内部的方法所修改,而不能在外面直接被调用。就像一个装好的黑匣子一样,你不能对里面的一些东西进行操作,只能玩玩盒子外面的开关。而在面向对象语言里,private 关键字定义的变量或方法就是盒子里的方法,public关键字定义的就是盒子外面的开关。
public class CreditCard{
private money = 1;
public storeMoney(){
存钱;
}
}
主函数{
CreditCard XiaoLiCard = new CreditCard();
XiaoLiCard.money = 1000;//这个操作是错误的!!
XiaoLiCard.storeMoney();//这个操作可以
}
3.多态
所谓多态,就是一个对象具有多种特征,在特定的情况选择你要表达的特征就好。人类分为男人和女人,男人和女人有着不同的特征。
这就用到了多态的特性。
public class man extends Human{
........
}
public class woman extends Human{
.....
}
主函数{
Human XiaoLi = new man();
Human XiaoMei = new woman();
}