java基础篇(二) ----- java面向对象的三大特性之继承

java面向对象的三大特性之继承:


复用代码是java众多引人注目的功能之一,但是想要成为极具革命性的语言,仅仅是复制代码并对其加以改变是不够的。它必须能够做更多的事。引自《Think in java》    而代码复用也是程序员一直不断追求的。由此来说下代码复用的一种方式 java面向对象的三大特性--继承!!

在面向对象程序设计中,继承机制可以有效地组织类的结构、确定类之间的关系,在已有类的基础上开发新的类。继承机制在程序代码复用、提高软件开发效率、降低软件系统维护成本等方面具有重要作用

在客观事物中,同类事物既有共性也有其特殊性。例如小轿车、客轮、客机都有载人数,发动机,转向,停止等共性,但每个具体事物又有其特殊性,如小轿车有前档、后档。客轮有吃水线和吨位,客机有飞行高度、巡航速度等。 摘自《利用案例轻松学java》。

我们可以吧交通工具定义为一个类,称为一般类。它具有小轿车,客轮和客机都拥有的发动机、载人数量、转向、停止等共性。还具有自己的属性和方法。

如果类B具有类A的全部属性和方法,而且又具有自己特有的属性和方法。则把类A称为一般类,把类B称作特殊。 上述交通工具是一般类,小汽车,客轮,客机为特殊类。

面向对象程序设计的继承机制是指在由一般类和特殊类形成的一般 --- 特殊之间的类结构中,把一般类和所有特殊类的对象实例都共同具有的属性和操作一次性的在一般类中进行定义,在特殊类中不在重复定义一般类中已经定义的属性和操作,特殊类自动拥有一般类(以及所有更上层的一般类)中定义的属性和操作。特殊类的对象拥有其一般类的对象的全部属性和操作(除非进行限制),称为一般类对特殊类的继承。

*注子类可以从父类那里继承所有非private的数据成员和方法作为自己的成员,即子类不能直接访问父类的私有成员(包括数据成员和成员方法) 如果需要访问私有数据成员,则通过getter和setter方法实现。如果定义一个类而不给出extends关键字及父类名,默认这个类是系统类Object的之类

如果类B继承了类A,那么类B具有类A的全部或部分属性和方法。我们将被继承的类A称为基类(超类,父类),继承类B为类A的子类(派生类)。

例如:

class A

{

int x=12;//被继承

static double y=34;//被继承

final int xx=123;//被继承,不能修改xx的搜索值,一经初始化就被看作常量使用

private float r=12.0f;//不能被继承

A()//不能被继承

{

//====构造方法体

}

public void f(){}//被继承

protected void d(){}//被继承

private  void k(){}//不能被继承

final  void  gg(){}//被继承,不能被覆盖

void  w(){}//被继承

//也就是说构造函数和被关键字private修饰的东西都不能被继承

}

class B extends A

{

//========

//=======

//A的类体

}

利用继承机制能有效避免重复描述一般类与特殊类之间的共性,同时通过继承可以清晰的表达每一个共同特征所适应的概念范围。

方法覆写:

方法覆写指子类的方法与父类的方法在方法名,参数个数和参数类型完全一致;

*注方法覆写时子类方法的访问控制权限不能小于父类中的方法的访问控制权限。(如父类访问控制权限为public时,子类也只能是public的 );

方法重载:

方法名相同,但参数个数或参数类型不同;

*注 两者区别在于: 方法覆写存在于子类与父类之间,重载存在于类内部方法之间

继承具有以下特征:

(1) 继承的关系是传递的

(2)继承简化了人们对客观事物的认识和描述,能清晰体现相关类之间的层次结构关系。

(3)继承提供了软件复用的能力

(4)继承减少了模块间的接口与界面,争强软件易维护性。

(5)提供多层继承机制,(但只允许单重继承。即一个子类只能继承一个父类)

但是虽然继承给我们带来诸多好处但是我们还是要慎用继承!!

继承会破坏封装,父对于类而言,他的实现细节对子类来书是透明的。

父类变,子类就必须变,继承也是一种强耦合关系。所以我们要慎用继承,但是我们合时使用继承呢?

《Think in java》中提供了解决办法:当我们必须要从子类向父类进行向上转型。则继承是必要的,但是如果不需要,则应当好好考虑自己是否需要继承。

本人学习总结所用,如有纰漏错误之处请指正,定虚心学习改正!谢谢。

不为失败找借口,只为成功找方法!!!!

时间: 2024-08-02 02:49:21

java基础篇(二) ----- java面向对象的三大特性之继承的相关文章

面向对象的三大特性之继承-基础知识总结------彭记(05)

面向对象的三大特性之继承: js中的某些对象没有一些需要的属性和方法,但是另外的对象有,那么拿过使用,就是继承. js中继承的实现方式: 1.混入式继承:通过循环将一个对象中的所有属性和方法混入到另外一个对象中: var me={ work:function(){ console.log('敲代码'): } }: var mayun={ money:9999999, car:'000', manager:function(){ console.log('管理巴巴...'); } } /*遍历,让

面向对象的三大特性之继承

# 面向对象的三大特性之继承 # 当类之间有显著不同,并且较小的类是较大的类所需要的组件时,用组合比较好 (如机器人) # 当类之间有很多相同的功能,提取这些共同的功能做成基类,用继承比较好 (动物--猫) # 继承同时有两种含义:1,继承基类的方法,并且做出自己的改变或扩展(代码重用),这种意义并不大,因为它使子类和基类出现强耦合 # 2,声明某个子类兼容于某基类.定义一个接口类,子类继承接口类,并实现接口中定义的方法 # 接口继承只是接口类规定了子类必须实现的方法,但是接口类里不去实现,子类

面向对象的三大特性---封装继承多态

面向对象的三大特性---封装继承多态 首先我们来创建一个控制台程序 新建一个父类Person 创建一个子类继承父类Person 子类: main函数: 输出结果: 根据结果显示创建子对象,首先调用父类的构造函数在调用子类的构造函数. 继承的传递性 例如: A:B,B:C,则A:C ⅰ.继承过来之后被隐藏,有意隐藏加一个关键字"new",如果加了关键字"new",就告诉子类,父类里面的sayHi只能被隐藏,不能被覆写  ⅱ.继承过来之后被覆写/重写,覆写需要在父类里面

java基础篇(一) ----- java面向对象的三大特性之封装

java面向对象的三大特性之封装:   封装(Encapsulation)是面向对象的一个重要特征,就是把对象的属性和操作(或服务)结合为一个独立的整体,并尽可能隐藏对象的内部实现细节. 通俗的讲所谓封装就是将属性和方法捆绑到一起,封装到一个对象中去, 形成一个不可分割的独立单位,以及尽可能隐藏对象的内部结构,也就是说,如果我们使用了封装技术的话,别人就只能用我们做出来的东西而看不见我们做的这个东西的内部结构了. 如果形容一个人(假设把人看做一个类),我们可以用姓名.年龄,性别等来描述,如果不封

面向对象编程三大特性之继承

面向对象编程有三大特性:继承,封装,多态~ 从object基类开始,逐步向下开枝散叶,组成了整个对象体系. 为什么要用这种形式? 解答这个问题之前,我们可以先回顾一下生物的进化史~ 从单细胞开始到现在的哺乳动物,在不断地进化中,物种的身体结构愈加复杂,这种进化所花费的时间非常漫长,但是一旦进化成功,后代就可以直接拥有父母的结构,而不用再次花费漫长的时间用来进化. 现在我们再次回到继承上来,object基类支持 .NET Framework 类层次结构中的所有类,并为派生类提供低级别服务.这是 .

OC基础(五)面向对象的三大特性:封装、继承、多态

一.封装: 封装是屏蔽内部实现的细节, 仅仅对外提供共有的方法/接口 好处: 保证数据的安全性,将变化隔离 规范: 一般情况下不会对外直接暴露成员变量, 都会提供一些共有的方法进行赋值成员变量都需要封装起来 注:1.若一个类把自己的成员变量暴露给外部的时候,那么该类就失去对该成员变量的管理权,别人可以任意的修改你的成员变量. 2.封装中经常使用@property(即setter和getter方法) 3.在类的延展中对类进行分装,即: @interface NSObject () @end 二.继

java基础篇(三) ----- java面向对象的三大特性之多态

封装(encapsulation) 类使得数据和对数据的操作捆绑在一起,从而对使用该类的其他人来说,可以不管它的实现方法,而只管用它的功能,从而实现所谓的信息隐藏: 继承(inheritance) 继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类.这种技术使得复用以前的代码非常容易,能够大大缩短开发周期,降低开发费用.比如可以先定义一个类叫animal,animal具有以下属性:   眼睛,鼻子,耳朵 而又由ani

Java 基础知识(二)之面向对象技术

1.    面向对象与面向过程的区别 面向对象把数据及对数据的操作方法放在一起,作为一个互相依存的整体,即对象.对同类对象抽象出其共性,即类,类中的大多数数据,只能被本类的方法进行处理.类通过一个简单的外部接口与外界发生关系,对象与对象之间通过消息进行通信.程序流程由用户在使用中决定. 面向过程是一种以事件为中心的开发方法,就是自顶向下顺序执行,逐步求精,其程序结构是按功能划分为若干个基本模块,这些模块形成一个树状结构,各模块之间的关系也比较简单,在功能上相对独立,每一模块内部一般是由顺序.选择

二、面向对象设计三大特性-----《大话设计模式》

一.封装 良好的封装能够减少耦合:类内部的实现可以自由地修改:类具有清晰的对外接口.比如建立一个猫的类,再建立一个狗的类,这样也算封装,只是会出现大量相似代码. 二.继承 继承的出现是因为对象类中出现过多重复代码,为解决该问题而建立父类,将这部分代码放进父类中,由子类继承.子类继承父类的所有特性,同时可以定义新的特性. 如果子类继承于父类,子类拥有父类非private的属性和功能:子类具有自己的属性和功能,即子类可以扩展父类没有的属性和功能:子类还可以以自己的方式实现父类的功能(方法重写). c