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

通过重用已经测试并验证通过的代码,怎样才减少开发工作,所有开发团队都在为一问题而努力。一个久经考验的方法是通过有效地使用Java继承优化应用程序开发。 继承的从某种意义上讲,继承的短暂美就如同宇宙中所有事与其它事情都存在一种特殊的关系。

Java继承

Java继承是面向对象的最显著的一个特征。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。

Java继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。

这种技术使得复用以前的代码非常容易,能够大大缩短开发周期,降低开发费用。比如可以分隔符先定义一个类叫车,车有以下属性:车体大小,颜色,方向盘,轮胎,而又由车这个类派生出轿车和卡车两个类,为轿车添加一个小后备箱,而为卡车添加一个大货箱。

类和类之间的继承关系可以用UML符号表示,其中父类又叫超类基类,子类又叫派生类

父类是子类的一般化,子类是父类的特化(具体化)。

JAVA不支持多继承,单继承使JAVA的继承关系很简单,一个类只能有一个父类,易于管理程序,同时一个类可以实现多个接口,从而克服单继承的缺点。

面向对象程序设计中运用继承原则,就是在每个由一般类和特殊类形成的一般——特殊结构中,把一般类的对象实例和所有特殊类的对象实例都共同具有的属性和操作一次性地在一般类中进行显式的定义,在特殊类中不再重复地定义一般类中已经定义的东西,但是在语义上,特殊类却自动地、隐含地拥有它的一般类(以及所有更上层的一般类)中定义的属性和操作。

特殊类的对象拥有其一般类的全部或部分属性与方法,称作特殊类对一般类的继承。

继承所表达的就是一种对象类之间的相交关系,它使得某类对象可以继承另外一类对象的数据成员和成员方法。若类B继承类A,则属于B的对象便具有类A的全部或部分性质(数据属性)和功能(操作),我们称被继承的类A为基类、父类或超类,而称继承类B为A的派生类或子类。

继承避免了对一般类和特殊类之间共同特征进行的重复描述。

同时,通过继承可以清晰地表达每一项共同特征所适应的概念范围——在一般类中定义的属性和操作适应于这个类本身以及它以下的每一层特殊类的全部对象。

运用继承原则使得系统模型比较简练也比较清晰。

Java继承分类

继承分为单继承和多重继承。单继承是指一个子类最多只能有一个父类。多继承是一个子类可以有二个以上的父类。

由于多继承会带来二义性,在实际应用中应尽量使用单继承。Java语言中的类只支持单继承,而接口支持多继承。

Java中多继承的功能是通过接口(interface)来间接实现的

Java继承的特征

(1)继承关系是传递的。若类C继承类B,类B继承类A(多继承),则类C既有从类B那里继承下来的属性与方法,也有从类A那里继承下来的属性与方法,还可以有自己新定义的属性和方法。

继承来的属性和方法尽管是隐式的,但仍是类C的属性和方法。继承是在一些比较一般的类的基础上构造、建立和扩充新类的最有效的手段。

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

(3)继承提供了软件复用功能。若类B继承类A,那么建立类B时只需要再描述与基类(类A)不同的少量特征(数据成员和成员方法)即可。

这种做法能减小代码和数据的冗余度,大大增加程序的重用性。

(4)继承通过增强一致性来减少模块间的接口和界面,大大增加了程序的易维护性。

(5)提供多重继承机制。从理论上说,一个类可以是多个一般类的特殊类,它可以从多个一般类中继承属性与方法,这便是多重继承。

Java出于安全性和可靠性的考虑,仅支持单重继承,而通过使用接口机制来实现多重继承。

java继承的实例

//建一个A类
class A{
//成员变量 其中num是实参
int num=0;
//成员方法,其中 i 是型参
public A(int i){
//输入int型文件输出下面
System.out.println("aaaaaaaaaaaaaaaaaaa");
System.out.println("i= "+i);
//把输入的i赋值给成员变量num
num=i;
}
}
//B继承A
class B extends A{
int num=0;
//成员方法B.
public B(){
//继承类A的方法.因为B继承了A必然继承了A的特性.所以输入int值10令方法实现.
super(10);
System.out.println("bbbbbbbbbbbbbbbbbbbb");
//这里的num是类B的.
System.out.println("num= "+num);
//如果想显示类A的num则需要用下列的super.num.这里注意num在类A中需是成员变量才可以.
System.out.println("super.num= "+super.num);
}
}
//建立测试类C
public class C{
//main
public static void main(String aa[]){
//new 一个对象B()
new B();
}
}

JAVA继承的优势

Java继承的从某种意义上讲,Java继承的短暂美就如同宇宙中所有事与其它事情都存在一种特殊的关系。

教育者试图向门外汉们解释继承的概念,常常通过讨论相关动物群之间的关系来解释这一概念。

JavaNET中,在某种程度上讲,所有事物都是对象类型的一种软件组件。然而,从那里开始,开发选择什么在子类和超类继承中进行关联是设计的重点。

使用Java进行桌面渲染中的问题是,过多的思想投入到把在一起的可视化项目进行分组。

从亲子关系来看,所有地的知名的图形元素,虽然知名的方法不同,但都与一般的Window类有着极大的关系。

所有我们选择的、继承于Window类的,与JDialog属性有关的东西,都与上一级的JFrame有关,因为他们有共同的父Window类。

的确,编写可重用的代码来管理许多相关的子对象是优秀设计的标志。

正如上文说的狗和窗户一样,伟大的多态设计都是关于抽象、分类、设计、和继承的。

时间: 2024-08-06 20:29:38

java面向对象三大特性之继承的相关文章

(1) 深入理解Java面向对象三大特性 封装 继承 多态

转眼已经工作快6年了,最开始做了2年J2EE:然后整了2年的数据仓库,主要是Cognos的报表开发:现在从事4G LTE核心网的开发,用的语言任然是Java,但写代码的机会不多,基本都是看代码找BUG,偶尔做点new feature也是在比较成熟的框架上复制.粘贴.修改,大部分时间还是在理解业务,钱多.事少.离家近,当时来这家公司图的是后面2点,2年过去了,英文水平有所提升,对敏捷开放也有一定的了解,但技术方面明显退步了或者说没有进步吧,本来以前也不怎么好,因为工作上用不到,自己也没怎么学习,所

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

1.封装 封装的定义: 首先是抽象,把事物抽象成一个类,其次才是封装,将事物拥有的属性和动作隐藏起来,只保留特定的方法与外界联系 为什么需要封装: 封装符合面向对象设计原则的第一条:单一性原则,一个类把自己该做的事情封装起来,而不是暴露给其他类去处理,当内部的逻辑发生变化时,外部调用不用因此而修改,他们只调用开放的接口,而不用去关心内部的实现 举例: public class Human { private int age; private String name; public int get

Java基础1:深入理解Java面向对象三大特性

Java基础1:深入理解Java面向对象三大特性 三大特性:继承 封装 多态 继承 继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类. 子类拥有父类非private的属性和方法. 子类可以拥有自己属性和方法,即子类可以对父类进行扩展. 子类可以用自己的方式实现父类的方法 Java中的继承只能单继承,但是可以通过内部类继承其他类来实现多继承. public class Son extends Father{publi

【转】java提高篇(二)-----理解java的三大特性之继承

[转]java提高篇(二)-----理解java的三大特性之继承 原文地址:http://www.cnblogs.com/chenssy/p/3354884.html 在<Think in java>中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情.在这句话中最引人注目的是"复用代码",尽可能的复用代码使我们程序员一直在追求的,现在我来介绍一种复用代码的方式,也是java三大

JAVA面向对象三大特性总结

什么是面向对象? 面向对象编程(Object Oriented Programming,OOP,面向对象的程序设计).所谓"对象"在显示支持面向对象的语言中,一般是指类在内存中装载的实力,具有相关的成员变量和成员函数(也称为:成员方法).面向对象的程序设计完全不同于传统的面向过程程序设计,它大大降低了软件开发的难度,使编程就像搭积木一样简单. 什么是面向过程? 面向过程编程(Procedure Oriented Programming,OPP,面向过程的程序设计).是一种以过程为中心的

[黑马程序员]Objective-C 面向对象三大特性之继承

基本概念 程序的世界和人类的“对象”世界在思想上是没有设么区别的,富二代继承了父母,自然就拥有了父母拥有的所有资源,子类继承了父类同样就拥有了父类所有的方法和属性(成员变量). 比如我们前文(Objective-C 面向对象三大特性之多态)中提到的Animal和Dog类: #import <Foundation/Foundation.h> @interface Animal : NSObject -(void) eat; @end @implementation Animal -(void)

面向对象三大特性(封装/继承/多态)

引入:在面向对象思想中,有三大特性,封装  继承  多态. 思考:我们在使用类和对象实现编程的时候,到底是遵循这什么样的逻辑呢?为什么要这样规范类呢? 引入:面向对象很重要的思想就是隐藏,即外部不知道类内部是如何实现业务逻辑的,只管调用和使用结果,这个就是面向对象三大特性之一:  封装 1.封装[掌握] 定义:封装,字面意思就是将内容装到某个容器中,并进行密封保存,在面向对象思想中,封装指数据和对数据的操作捆绑到一起,形成 对外界的隐藏,同时对外提供可以操作的接口. 1.数据:即要操作的数据,在

Java面向对象三大特点之继承

概念: 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为. 生活中的继承: 兔子和羊属于食草动物类,狮子和豹属于食肉动物类. 食草动物和食肉动物又是属于动物类. 父类更通用,子类更具体.虽然食草动物和食肉动物都是属于动物,但是两者的属性和行为上有差别,所以子类会具有父类的一般特性也会具有自身的特性. 类的继承格式 在 Java 中通过 extends 关键字可以申明一个类是从另外一个类继承而来的,一般形式如下: cla

java 面向对象三大特性(封装,继承,多态)以及抽象、接口的介绍

封装: 1.定义:隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别. 2.封装的目的是:增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过外部接口,一特定的访问权限来使用类的成员. 3.封装的基本要求是:把所有的属性私有化,对每个属性提供getter和setter方法,如果有一个带参的构造函数的话,那一定要写一个不带参的构造函数.在开发的时候经常要对已经编写的类进行测试,所以在有的时候还有重写toString方法,但这不是必须的. 继承: 1.目的:实