Java三大特征

Java三大特征


封装
继承
多态
先讲讲抽象
抽象:从众多的事物中抽取出共同的、本质性的特征,而舍弃其非本质的特征。例如苹果、香蕉、生梨、葡萄、桃子等,它们共同的特性就是水果。得出水果概念的过程,就是一个抽象的过程。


在抽象时,同与不同,决定于从什么角度上来抽象。抽象的角度取决于分析问题的目的。
一、封装
定义:隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读取和修改的访问级别。


途径:将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员


人{
年龄(属性一)
身高(属性二)
性别(属性三)


做事(行为之一)
走路(行为之二)
说话(行为之三)
}
二、继承
允许存在父子类的关系,一个子类有且只有一个直接的父类(Java中的继承是类之间的单继承.)


继承的目的: 实现代码的复用.理顺类型对象之间的结构关系.
继承的含义
子类自动拥有父类的属性和行为(一般化的体现,目的就是达到代码的复用)


子类可以定义自己特有的属性和行为(特殊化的体现,目的就是达到功能的扩展)


子类可以把从父类继承下来的行为用自己的方式重新实现(通过方法重写来达到)
有些事物有共性,但还存在区别

{
    年龄(属性一)
    身高(属性二)
    性别(属性三)


    做事(行为之一)
    走路(行为之二)
    说话(行为之三)
}
教师
{
    年龄(属性一)
    身高(属性二)
    性别(属性三)


    做事(行为之一)
    走路(行为之二)
    说话(行为之三)


    教书(行为之四)
}


Overload与Override
比较Overload & Override


Overload:同一个类中方法名相同,参数列表不同


Override:不同类中(父类和子类),方法名相同,参数列表也相同
三、多态
多态: 一个接口多种实现,可以理解为一种语法上的允许,表现形式多样。
简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针


多态也称为动态绑定、后期绑定、运行时绑定。
例如
IA ia = new TestIA();其中IA为定义的接口,TestIA为接口的实现类


Father f = new Son();其中Father为父类,Son为子类


Animal a = new Dog();其中Animal为抽象类,Dog为Animal类的子类




多态的特点
子类都能以父类的身份出现(里氏代换原则)


子类以父类的身份出现,但是做事情时,还是用子类自己的方式来实现


子类以父类的身份出现时,自己特有的属性和行为将不能使用
具体例子
人这个类,封装了很多人类共有的特性


教师是人的子类,继承了人的属性与行为,当然教师有自己的特征行为,比如教书授课


学生是人的子类,继承了人的属性与行为,当然学生有自己的特征行为,比如学习做作业


现在,当我们需要去描述教师与学生各自的行为的时候, 我们可以分开来说"教师在授课",  "学生做作业",  但如果我们要站在抽象的角度,  也就是从教师与学生的父类"人"的角度, 来同时描述他们各自的行为时,我们怎么描述?"人在授课"?"人在做作业"?这是不是怪怪的很不合适?不合适的问题就在于, 对于行为主体,我们使用了抽象层次的东东"人",而对于行为本身, 我们却使用了具体的东东"授课"与"教书". 怎么解决呢? 那就需要解决抽象与具体的矛盾问题. 
既然是站在抽象在角度来描述,那我们把行为抽象一下,不就能同时描述了吗?比如"人在做事"(教师授课与学生做作业都可以说成人在做事),这样就解决了抽象层次与具体层次之间的矛盾


到了这一步, 我们可以把两个描述: "教师在做事", "学生在做事" 两者统一为"人在做事",
然后, 我们可以在"教师"的"做事"行为中去调用教师自己的特征行为"授课",
在"学生"的"做事"行为中去调用学生自己的特征行为"做作业", 
所以,当调用"人"去"做事"的时候,如果这个人是教师,那他所做的事实际上就是"教书",
如果这个人是学生,那他所做的事实际上就是"做作业".
也就是说在这里"人"是多态的, 在不同的形态时,特征行为是不一样的, 这里的"人", 同时有两种形态,一种是教师形态,一种是学生形态,所对应的特征行为分别是"授课"与"做作业".
多态, 就是站在抽象的层面上去实施一个统一的行为,到个体(具体)的层面上时, 这个统一的行为会因为个体(具体)的形态特征而实施自己的特征行为.
谢谢
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值