「java子类型」JAVA子类
本篇文章给大家谈谈java子类型,以及JAVA子类对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
java中子类和子类型的区别
子类化(subclass) 和 子类型化(subtype)的区别[原创,未经作者许可不得转载]
subtype具有更加严格的要求,就是父类的任何子类都可以在运行时可无缝的代替父类的工作,子类的接口具有更加相比父类更加强的前置条件,父类的接口在子类中得到继承,并且不得在子类中修改父类方法的签名.子类型化的好处是实现依赖倒置,参见参考读物的Bicycle一图,
subclass主要目的为了更加方便的重用,通常不需要符合Is-a的要求,如果采用组合,那么必须手写大量接口,然后Delegate给这个成员变量,如果父类很大的话,使用组合需要大量的工作量,而采用继承则方便很多,另外通过继承可以访问protected的成员及其方法,这也是组合所不具备的。
java什么叫子类?
父子类:存在继承关系,关键字extends,例如你说的:class Son extends Father{String name;} 儿子是父亲的一个子类,是两个独立的类,只是子类继承父类的成员变量和成员方法
内部类:与继承无关,是定义在一个类内部的类,可以看成是类的一部分,分为:
例如:class Father{class FatherClothes extends Clothes{} } 这个表示 “ 父亲的衣服FatherClother” 定义在父亲类里面(没有继承关系),并继承衣服类Clother(有继承关系)
此时“父亲的衣服类”可以看成是父亲类的一个一个成员变量,但他们没有继承关系,可以写成:Father.FatherCloter ,而那个“.”,表示成员运算符表示FatherClother是Father的一个成员,就像上面Son类中的 Son.name一样,但是我们不能写成Father.Son。
所以楼主说的 “class a1 extends a2{}那么a1是a2的子类吗?”是对的。
“我们写B1.B2.C3(中间是点号)的时候,就表示c3是b2的子类,b2是b1的子类?”不是子类,是内部类
“那class a1{class a2{}}这样a2也是a1的子类吗?也可以写成a1.a2?”不是子类,是内部类
内部类在解决这样的问题的时候,很有用(当然只是一个方面,还有别的用处):
一个接口A中有p()方法,一个类B中也有p()方法,那么我想让这个接口被B实现,然后调用p()方法(B类中的p()方法,我不想覆盖),但是我们调用的哪个?
此时我们可以在B的内部声明一个内部类C,让C去实现A接口,然后调用B中原有的p()方法,可以用B的对象 b.p(),调用接口中被实现的p()方法,可以b..c.p()(c是类C的一个实例)
继承,太熟悉了,熟悉到都不知道说什么了,只能想到这么一句:继承意味着基于一个已经定义好的类创建一个新的类,新的类将以某种方式扩展原有的类,可以认为就是一个类得到另一个类所有属性的过程(构造函数木有被继承,但子类可以通过super调用)。
后面还有匿名内部类,有兴趣可以百度一下了解了解。
Java,子类型是什么
就是有父类型的类——继承于某个其它类,它们都继承于Object,所以 它们都是Object的子类
java子类型的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于JAVA子类、java子类型的信息别忘了在本站进行查找喔。