Java的三⼤特性(基本特征)
⾯向对象的三个基本特征是:封装、继承、多态。
封装
封装最好理解了。封装是⾯向对象的特征之⼀,是对象和类概念的主要特性。
封装,也就是把客观事物封装成抽象的类,并且类可以把⾃⼰的数据和⽅法只让可信的类或者对象操作,对不可信的进⾏信息隐藏。
在Java中类中成员的属性有:public, protected, (default), private,这四个属性的访问权限依次降低。
继承java面向对象的特征有哪些方面
⾯向对象编程 (OOP) 语⾔的⼀个主要功能就是“继承”。继承是指这样⼀种能⼒:它可以使⽤现有类的所有功能,并在⽆需重新编写原来的类的情况下对这些功能进⾏扩展。
通过继承创建的新类称为“⼦类”或“派⽣类”。
被继承的类称为“基类”、“⽗类”或“超类”。
继承的过程,就是从⼀般到特殊的过程。
要实现继承,可以通过“继承”(Inheritance)和“组合”(Composition)来实现。
在某些 OOP 语⾔中,⼀个⼦类可以继承多个基类。但是⼀般情况下,⼀个⼦类只能有⼀个基类,要实现多重继承,可以通过多级继承来实现。
继承概念的实现⽅式有三类:实现继承、接⼝继承和可视继承。
1. 实现继承是指使⽤基类的属性和⽅法⽽⽆需额外编码的能⼒。
2. 接⼝继承是指仅使⽤属性和⽅法的名称、但是⼦类必须提供实现的能⼒。
3. 可视继承是指⼦窗体(类)使⽤基窗体(类)的外观和实现代码的能⼒。
在考虑使⽤继承时,有⼀点需要注意,那就是两个类之间的关系应该是“属于”关系。例如,Employee 是⼀个⼈,Manager 也是⼀个⼈,因此这两个类都可以继承 Person 类。但是 Leg 类却不能继承 Person 类。
抽象类仅定义将由⼦类创建的⼀般属性和⽅法,创建抽象类时,请使⽤关键字 Interface ⽽不是 Class。
OO开发范式⼤致为:划分对象→抽象类→将类组织成为层次化结构(继承和合成) →⽤类与实例进⾏设计和实现⼏个阶段。
多态
多态性(polymorphisn)是允许你将⽗对象设置成为和⼀个或更多的他的⼦对象相等的技术,赋值之后,⽗对象就可以根据当前赋值给它的⼦对象的特性以不同的⽅式运作。简单的说,就是⼀句话:允许将⼦类类型的指针赋值给⽗类类型的指针。
实现多态,有⼆种⽅式,覆盖,重载。
覆盖,是指⼦类重新定义⽗类的虚函数的做法。
重载,是指允许存在多个同名函数,⽽这些函数的参数表不同。
其实,重载的概念并不属于“⾯向对象编程”,重载的实现是:编译器根据函数不同的参数表,对同名函数的名称做修饰,然后这些同名函数就成了不同的函数。
如,有两个同名函数:function func(p:integer):integer;和function func(p:string):integer;。那么编译器做过修饰后的函数名称可能是这样
的:int_func、str_func。对于这两个函数的调⽤,在编译器间就已经确定了,是静态的。也就是说,它们的地址在编译期就绑定了,因此,重载和多态⽆关。真正和多态相关的是“覆盖”。当⼦类重新定义了⽗类的虚函数后,⽗类指针根据赋给它的不同的⼦类指针,动态的调⽤属于⼦类的该函数,这样的函数调⽤在编译期间是⽆法确定的。因此,这样的函数地址是在运⾏期绑定的。结论就是:重载只是⼀种语⾔特性,与多态⽆关,与⾯向对象也⽆关。
我们知道,封装可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类);它们的⽬的都是为了——代码重⽤。⽽多态则是为了实现另⼀个⽬的——接⼝重⽤。多态的作⽤,就是为
了类在继承和派⽣的时候,保证使⽤“家谱”中任⼀类的实例的某⼀属性时的正确调⽤。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论