㈠ 继承关系 java 画图
这图形又不清晰
如果是源码,估计很多TX有兴趣去试试 的
~~~~~~~~
㈡ JAVA中什么是继承
继承在本职上是特殊一般的关系,即常说的is-a关系。子类继承父类,表明子类是一种特殊的父类,并且具有父类所不具有的 一些属性或方法。
1.Java继承的语法格式:
Java继承的关键字是:extends
public class 子类名 extends 父类名{...}
如: public class UNStudent extends Student {...} 注:1.子类又称超类,拓展类 ;父类又称基类。
2.Java中类的继承只能是单继承(单根继承),即一个类只能继承一个父类,但是一个类可以由多个类来继承它。
3.Java会给每一个没有设置父类的类,自动添加一个父类就是Object 。
(2)java的继承关系图扩展阅读:
一、子类继承父类的结果
1.子类继承父类后,继承到了父类所有的属性和方法。注:是所有。
2.子类可调用的方法也要看情况而定:
子类和父类在同一个包下时 “子类和子类的对象”可以调用父类的默认的,受保护的,公有的属性以及方法。
子类和父类在不同的包下时,在子类中可以调用受保护的,公有的属性以及方法,而子类的对象可以调用受保护的,公有的属性以及方法。
二、方法的重写
1.当子类和父类都有某种方法,而子类的方法更加要求细致,或者实现功能不同,就需要方法的重写。
2.重写条件
①必须要存在继承关系;只有继承之间的关系才能有方法的重写
②方法的返回值类型,方法名,参数个数,参数类型,参数顺序,必须要完全一致;
如:父类中方法 public void play (int n ; String s){方法体1...}
重写后的子类方法public void play(int n ; String s){方法体2...}
3.子类重写方法时的访问修饰符可以大于或者等于父类方法的访问修饰符。
4.重写后的方法会被优先调用。
三、自动转型
自动转型的实现要求有继承关系
格式如下:父类名 对象名 = new 子类构造方法;
如:Student stu = new UNStudent;
而强制转型格式如下:子类名 对象名 = (子类名)父类对象名
如:UNStudent un = (Student)stu;
自动转型可以拓宽方法的作用访问域
在使用自动转型后,子类自己定义的方法是不能在自动转型后执行;
原因是因为Java的编译机制,它会优先判断父类中是否存在该方法,如果存在则通过编译,如果不存在则报错。
第二种自动转型:转型后只需要不同类的不同对象调用想吐的方法,很方便!
/**访问修饰符 返回值数据类型 方法名(父类类型 参数名,...){
调用方法。
}
父类名 对象名 = new 子类名;
子类名 对象名 = new 子类名;
方法名(对象名);
*/
比如拿到驾驶证为A2的人,可以驾驶重型货车,当然也可以驾驶大型货车,中型货车,小型货车,小客车,小轿车,摩托车... 可以选择第二种自动转型的方法,便于调用同一个方法。
自动转型好处:1.减少冗余代码;2.在方法设置参数时,扩大访问范围。
四、多态
多态是由方法重载,继承,方法重写,自动转型等技术的组合。
五、为什么需要继承?
1.提高代码的重用性。
2.提高程序的扩展性。
JAVA继承总结
㈢ java语言的类间的继承关系是
Java语言中的类只支持单继承,而接口支持多继承。
Java中多继承的功能是通过接口(interface)来间接实现的。
JAVA不支持多继承,单继承使JAVA的继承关系很简单,一个类只能有一个父类,易于管理程序,同时一个类可以实现多个接口,从而克服单继承的缺点。
继承分为单继承和多重继承。单继承是指一个子类最多只能有一个父类。多继承是一个子类可以有二个以上的父类。由于多继承会带来二义性,在实际应用中应尽量使用单继承。
继承是面向对象最显着的一个特性。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。[1] Java继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。这种技术使得复用以前的代码非常容易,能够大大缩短开发周期,降低开发费用。
㈣ 请问这两个java类图怎么看,里面的箭头哪个表示继承,哪个表示关联,关联的话怎么关联
推荐你看下这篇文章,很详细。看完后你肯定你看懂这两幅图表示的什么意思
https://www.ibm.com/developerworks/rational/library/content/RationalEdge/sep04/bell/
如果你需要有偿辅导服务的话,也可以私信我。
㈤ Java的IO操作中各种类的继承关系是怎样的
其实JDK文档里就有,你没有注意吧,在右边有一个Tree的链接,然后选择包名,就出来了。
给你个截图吧(后面还有很多每列出来):
其实看这个图对理解java.io包并不是很重要,关键要区分字节流和字符流,简单说来,InputStream和OutputStream及其子类处理字节流,Reader和Writer及其子类处理字符流。
㈥ java中类与类之间的关系是怎样的,请高手举例说明一下
一、继承关系
继承指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力。在Java中继承关系通过关键字extends明确标识,在设计时一般没有争议性。在UML类图设计中,继承用一条带空心三角箭头的实线表示,从子类指向父类,或者子接口指向父接口。
二、实现关系
实现指的是一个class类实现interface接口(可以是多个)的功能,实现是类与接口之间最常见的关系。在Java中此类关系通过关键字implements明确标识,在设计时一般没有争议性。在UML类图设计中,实现用一条带空心三角箭头的虚线表示,从类指向实现的接口。
三、依赖关系
简单的理解,依赖就是一个类A使用到了另一个类B,而这种使用关系是具有偶然性的、临时性的、非常弱的,但是类B的变化会影响到类A。比如某人要过河,需要借用一条船,此时人与船之间的关系就是依赖。表现在代码层面,为类B作为参数被类A在某个method方法中使用。在UML类图设计中,依赖关系用由类A指向类B的带箭头虚线表示。
四、关联关系
关联体现的是两个类之间语义级别的一种强依赖关系,比如我和我的朋友,这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的,而且双方的关系一般是平等的。关联可以是单向、双向的。表现在代码层面,为被关联类B以类的属性形式出现在关联类A中,也可能是关联类A引用了一个类型为被关联类B的全局变量。在UML类图设计中,关联关系用由关联类A指向被关联类B的带箭头实线表示,在关联的两端可以标注关联双方的角色和多重性标记。
五、聚合关系
聚合是关联关系的一种特例,它体现的是整体与部分的关系,即has-a的关系。此时整体与部分之间是可分离的,它们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享。比如计算机与CPU、公司与员工的关系等,比如一个航母编队包括海空母舰、驱护舰艇、舰载飞机及核动力攻击潜艇等。表现在代码层面,和关联关系是一致的,只能从语义级别来区分。在UML类图设计中,聚合关系以空心菱形加实线箭头表示。
六、组合关系
组合也是关联关系的一种特例,它体现的是一种contains-a的关系,这种关系比聚合更强,也称为强聚合。它同样体现整体与部分间的关系,但此时整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束,比如人和人的大脑。表现在代码层面,和关联关系是一致的,只能从语义级别来区分。在UML类图设计中,组合关系以实心菱形加实线箭头表示。
七、总结
对于继承、实现这两种关系没多少疑问,它们体现的是一种类和类、或者类与接口间的纵向关系。其他的四种关系体现的是类和类、或者类与接口间的引用、横向关系,是比较难区分的,有很多事物间的关系要想准确定位是很难的。前面也提到,这四种关系都是语义级别的,所以从代码层面并不能完全区分各种关系,但总的来说,后几种关系所表现的强弱程度依次为:组合>聚合>关联>依赖。
㈦ Java的IO操作中各种类的继承关系是怎样的
这是以前学习流时候的笔记,希望对你有用--------------------------------------------------------------------------------------------------IO流有三种分类方式:
一、按流的方向分为:输入流和输出流;
二、按流所处理的数据类型划分为:字节流和字符流;
三、按流的功能不同分为:节点流和处理流。
字节流: 可以从/向一个特定的I/O设备读/写数据的流,成为字节流。也称为低级流。
InputStream/OutputStream 字节
字符流
Reader,Writer
处理流: 实现对一个已存在的流的连接与封装,通过所封装的流的功能调用实现数据读/写功能的流。也称高级流。
处理流-输入流 字符输入流:InputStreamWriter/ 输入处理流:BufferedReader
处理流-输出流 字符输出流:OutputStreamWriter/ 输出处理流:BufferedWriter PrintStream PrintWriterFileInputStream 读取文件流
FileOutputStream写文件流用高级流封装低级液压,看低级流指向的设备而决定操作的对象指向设备的流
System.in 标准输入设备(从键盘输入)
System.out 标准输出设备(从控制台输出)
FileInputSteam 文件输入流
FileOutputStream 文件输出流
㈧ Java中表示各个类继承关系的这种图,叫什么图啊
统称UML(统一模型语言),专属名称叫类图
㈨ 请问如何看java api中的继承关系图啊
Object,Component,Button是三个类,分别位于java.lang包, java.awt包, java.awt包
包名就是起限定作用的
java中所有的类都是从Object类派生而来的
这里,Button类从Component类继承而来,Component类又从Object类继承而来
㈩ 为什么Java类只能继承一个父类
有取必有舍。Java认为多重继承不是一个很重要并且不是没有就不行的特性,但是他带来的危害却大于他的好处,所以舍弃。同理对于指针、内存管理都一样道理。
我同意有些人的回答说Java不信任程序员。正因如此,所以Java没有指针、不需要内存管理、也没有多重继承。但是,程序员可以说是最不值得信任的一群群体,不然为何需要专门的测试人员?所有语言都在一定程度不信任程序员,只是看程度如何而已。如果信任程序员的能力,应该去使用汇编语言、如果信任程序员的能力和水平,应该让程序员自己查BUG测试。
Java相比C++选择对程序员的给予更低信任度而换取更高的代码安全性。即Java选择了舍弃更多的功能或性能而选择更高的保险性罢了。
---------------------------用Java实现多重继承的方式-----------------------------
而对于多重继承的实现方式。其实并不应该像很多人说的那样使用实现多个接口实现的。如果这样,将产生大量的“CTRL C+CTRL V”,当你发现你大量的CTRL C+CTRL+V时,就几乎可以断定。你的代码写得不好了。
“实现上的继承就跟过度使用goto语句一样,使程序拧巴和脆弱。结果就是,面向对象系统通常遭受复杂和缺乏复用的痛苦。”— John Ousterhout( Tcl and Tk 的创始人) Scripting, IEEE Computer, March 1998“面向对象编程语言的问题在于,它总是附带着所有它需要的隐含环境。你想要一个香蕉,但得到的却是一个大猩猩拿着香蕉,而其还有整个丛林。”— Joe Armstrong(Erlang语言发明人)以下就以大猩猩的例子举例实现多重继承。现有抽象对象猩猩和对象大猩猩、拿着香蕉的大猩猩、拿着苹果的大猩猩、拿着香蕉和苹果的大猩猩,四个对象。继承关系图如下:(word作图,某些箭头不规范,请见谅)
并且再考虑有一个人类的类。里面有一个方法:“喂猩猩”,参数是“猩猩”类型。注:猩猩是抽象类。
Version 1 --------使用组合+继承
这样,既实现了多继承、也实现了多态——无论是大猩猩,还是拿着香蕉和苹果的大猩猩都能传递参数给人类的“喂猩猩的方法”了。
但这样还有一个问题,假如我还需要在大猩猩的层面扩充继承的更多数量的类如继承“野生动物”。而在人类的方法新增远离野生动物的方法:
Version2----------接口+组合
这就是我们说的用接口实现多重继承。是因为这样可以把子类利用多态赋给多个父类(接口),而把主要的方法使用组合封装起来而避免多次实现接口的方法。需要多少钟父类型,就在顶层增加接口实现。注:本初的猩猩类依旧可以设计为“类”即最顶层可以考虑拥有一个(抽象)类,也可以全部都是设计为接口,具体看业务需求和复杂度而定。
以上是参加完Oracle 新员工培训后所思所得,有错请评论指出。