首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

java面向对象的三大特性

java面向对象三大特性:继承,封装、多态。

1、继承:

所谓继承,以人为例子。父亲生下儿子,具有相同特征,有嘴巴,鼻子,耳朵,四肢。还有爸爸跟着爷爷学会了木匠,儿子跟着父亲,从小也学会了木匠。这些都继承了。但是也有父类所没有的,比如爸爸不会的书法,儿子在后天的学习中学会了。概念并不复杂。java中的继承,抛弃了c++中的多继承,只能继承一个父类。

继承的关键字是exdents。

下面来一段代码:

class A{

Brain brain;//成员属性定义为对象。脑

Limb limb;//四肢

Foot foot;//脚

void category(){

System.out.prinyln(“我是人类”);

}

void Skill(){

System.out.prinyln(“我会木工、会编程”);

}

}

class B extends A{//继承A类

void Skill(){

System.out.prinyln(“我会书法、会下象棋”);

}

}

B继承A,A的所以特性都被继承了。但是技能覆盖了父类的技能。

如果三个类,A类是父亲,B类是母亲,C类是儿子。儿子想要继承A类,又想继承B类。在java就需要这样想。B继承A,C继承B,达到C继承了A和B。所以java在继承上面还是有缺陷,但是比起c++的多继承,从技术的角度来说,是为了降低复杂性。例如,A类中有一个m方法,B类中也有一个m方法。如果C类单独继承A类或者B类时,C类中的m方法要么继承于A类,要么继承于B类。而如果多重继承的话,C类的m方法有可能来自A类,又有可能来自B类,就会造成冲突。这样的继承关系,就会增加复杂性,甚至进一步影响多态的灵活性。

2、封装:

拿银行的自动取款机为例子。你现在操作取款机,就是希望能取出自己的钱。取款机取钱不是直接在里面拿,而是需要你操作,然后通过取款机的出钞口出来。这样就解决了安全性。你不知道取款机里面有多少钱,也不能多拿。这就是封装。

来一段代码:

class A{

private static double money;//取款机现有金额

String WithdrawMoney(double money){//取钱的方法。参数为要取的金额

String s="取钱没开始";

if(this.money >= money){//如果取款机里面有足够的钱,就取出。

//取出钱的操作

s = "取款成功";

}else{

s = "取款机余额无法取出这么多";

}

return s;

}

}

这里定义了取款机,里面的钱,是private私有的,无法直接进行操作,只能通过WithdrawMoney()取钱方法来取钱。

这就是所谓的封装,使程序更加安全。

3、多态:

多态是面向对象的重要特性,简单点说:“一个接口,多种实现”,就是同一种事物表现出的多种形态。编程其实就是一个将具体世界进行抽象化的过程,多态就是抽象化的一种体现,把一系列具体事物的共同点抽象出来, 再通过这个抽象的事物, 与不同的具体事物进行对话。 对不同类的对象发出相同的消息将会有不同的行为。比如,你的老板让所有员工在九点钟开始工作, 他只要在九点钟的时候说:“开始工作”即可,而不需要对销售人员说:“开始销售工作”,对技术人员说:“开始技术工作”, 因为“员工”是一个抽象的事物, 只要是员工就可以开始工作,他知道这一点就行了。至于每个员工,当然会各司其职,做各自的工作。多态允许将子类的对象当作父类的对象使用,某父类型的引用指向其子类型的对象,调用的方法是该子类型的方法。这里引用和调用方法的代码编译前就已经决定了,而引用所指向的对象可以在运行期间动态绑定。再举个比较形象的例子:比如有一个函数是叫某个人来吃饭,函数要求传递的参数是人的对象,可是来了一个美国人,你看到的可能是用刀和叉子在吃饭,而来了一个中国人你看到的可能是用筷子在吃饭,这就体现出了同样是一个方法,可以却产生了不同的形态,这就是多态!

下次得有一个专门的文章,来讲多态!

“我自己是一名从事了多年的java开发的老程序员,辞职目前在做线上教育讲师,今年4月我花了一个月整理了一份最适合2018年学习的java材料,从最基础的面向对象到线程,jdbc都有整理,送给每一位小伙伴,这里是学习者聚集地,欢迎初学和进阶中的小伙伴。"

加QQ群:850665689 (招募中)

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180806A0K9PG00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券