继承是一种面相对象的基本特征之一,但在具体语言的语法设计中有两种方式:单继承和多继承. 所谓多继承是指一个子类可以拥有多个父类:单继承则是一个子类只拥有一个父类. 单继承与多继承的优劣: 多继承优点在于由于可以同时具备多个父类的特征,可以让子类拥有更高的丰富的:而缺点是类的继承结构变的复杂,而且可能出现菱形的风险. 单继承的优点在于层次结构的清晰,设计上更容易把握:缺点是在丰富度要求较高和复杂的情况下,单继承从设计结构上没办法满足. java的解决方案: Java只是在设计语法时为了类层次结构的…
Java中的集合(三)继承Collection的Queue接口 一.Queue介绍 Queue接口继承自Collection接口,是Java中定义的一种队列数据结构,元素是有序的(按插入顺序排序),先进先出(FIFO)原则.不支持随机访问数据,新元素插入(offer)到队列的尾部,访问元素(poll)操作会返回队列头部的元素.通常,队列不允许随机访问队列中的元素. 队列:是计算机中的一种数据结构,保存在其中的数据具有“先进先出(FIFO,First In First Out)”的特性,新元素插入…
Java中的集合(六)继承Collection的Set接口 一.Set接口的简介 Set接口和List接口都是继承自Collection接口,它与Collection接口中功能基本一致,并没有对Collection接口的扩展,但是它比Collection接口更严格.Java中的Set接口类似于数学直观上的集合. Set接口的特性 1.Set接口元素无序.存储和读取元素都是无序的: 2.Set接口存储的元素不能重复. 二.Set接口的类图结构 通过上面的类图可用看出:Set接口下一共有三个实现类:…
Java中的集合(五)继承Collection的List接口 一.List接口简介 List是有序的Collection的,此接口能够精确的控制每个元素插入的位置.用户能够根据索引(元素在List接口的中位置)访问List中的元素,类似于Java中的数组. List接口有如下特点: 有序的集合.存储顺序和获取元素的顺序都是一致的: 可重复.允许存储重复的元素: 提供索引.提供一些索引的方法,供用户操作. 二.List类图结构 通过上面类图可用看出,List接口下有4个实现类,分别为:Linked…
继承的特点:继承父类的属性和方法.单继承(多层继承)c++里的继承是多继承 特性 :方法的复写(重写) java中的继承和OC中一样. 比如:人可以养狗; 人---->狗 :整体和部分(拥有)关系. 球队---->球员 :整体和部分的关系. 代码中是最常见 has a 的关系 人 ---->学生 :学生是人  : 说明有一个继承关系存在 , 关系到底是否表现出来,有具体的情况来决定. 如何判断两个事物之间是否存在一个继承关系: is a  谁是谁是否成立.成立就有继承关系. A:B :…
父类中的final  private方法不能被继承,父类中的static方法可以被继承,但是不能重写,这三者都属于前期绑定,java中除了这三种以及构造方法之外剩下的都是后期绑定(运行是绑定). 当父类的引用指向子类时,调用静态方法看引用,调用普通方法看对象. 静态的方法可以被继承,但是不能重写.如果父类中有一个静态的方法,子类也有一个与其方法名,参数类型,参数个数都一样的方法,并且也有static关键字修饰,那么该子类的方法会把原来继承过来的父类的方法隐藏,而不是重写.通俗的讲就是父类的方法和…
---------------------------------------------------------------多态1.JAVA里没有多继承,一个类之能有一个父类.而继承的表现就是多态.一个父类可以有多个子类,而在子类里可以重写父类的方法(例如方法print()),这样每个子类里重写的代码不一样,自然表现形式就不一样.这样用父类的变量去引用不同的子类,在调用这个相同的方法print()的时候得到的结果和表现形式就不一样了,这就是多态,相同的消息(也就是调用相同的方法)会有不同的结果…
此前面试遇到了单例问题,本以为已经背的滚瓜烂熟,没想到被问单例如何避免被反射和序列化破坏,虽然后来还是等到了通知,但还是复习一下单例的实现方式,并学习防止反射和序列化破坏的手段. 基本实现方式 其他相关资料中,最多的能数出八种单例实现方式,而实际上其中有些实现并不具备实际意义,在文中出现也仅是为了指出存在的问题便于引出下文.本文仅介绍有实际意义的单例实现模式.为了缩减篇幅,先给出一个后续出现代码的模板的类图: classDiagram class Singleton{ -Logger log$…
在Java中通常要比较两个对象在修改前与修改后的值是否相同,一般我们采用的是反射技术获取对象的get方法[或其他的方法]获取值并做比较.如果系统将修改的属性名称也显示出来,这样就能更直观的显示类中的哪一个属性的值被修改了.然后Java中只能获取属性的名称,也就是英文标识的属性名,但是一般我们都会在属性后面添加属性的注释,但是Java不提供注释获取的方法.所以我们只能使用另外一种方式来将属性和属性注释关联起来,这就是Java中的@Annotation. public static  Map<Str…
错误: Exception in thread "main" java.lang.UnsatisfiedLinkError: Test.testPrint(Ljava/lang/String;)V at Test.testPrint(Native Method) at Test.main(Test.java:8) 解决方法: 昨天一天都在想办法解决这个问题,操作步骤按照教程来的,怎么会出错呢?想了半天,觉得还是dll文件生成的不对.所以,最后决定把codeblocks换成visual…