OO程序设计中最强大可能就是代码的重用,结构化设计从某种程度上提供了代码重用--你可以编写一个过程,然后根据需要使用多次。不过OO设计则更进一步,允许通过组之类并抽取各个类的共性来定义类之间的关系,这不仅有利于代码重用,还可以实现更好的整体设计。继承是提供这种功能的一个主要途径。
继承允许类继承另一个类的属性和方法。这就允许通过抽取共同的属性和行为来创建全新的类。OO程序设计中主要的设计问题之一就是抽取不同类的共性。例如,假如你有一个dog类和cat类,各个类都有一个属性来表示眼睛颜色。在过程式设计模式中,dog和cat代码都包含这个属性。OO设计中,这个颜色属性可能上移到一个名字是animal的类中。这个类还包括所有其他共同的属性和方法,在这个情况之下,dog和cat类都继承Animal类
实例化dog类和或者是cat类的时候,它包含该类本身的所有内容,还包括从其从父类继承的所有内容,因此,dog包含其类定义的所有成员,还包括从animal来继承的所有成员。
超类(父类)包含继承自该类的所有子类共同的属性和行为,例如,对于animal类而言,所有的哺乳动物都有类似的属性,如有眼睛的颜色,haircolor,另外有一些共同的行为,所有的哺乳动物都有这些属性和行为,所有没有必要在继承树中对每一种哺乳动物都重复定义这些属性和行为,重复不仅需要做更多工作,可能更麻烦,而且还可能招致错误和不一致因此,dog和cat从animal种继承了所有这些个共同的属性和方法。Animal类则认为是dog和cat的超类
继承可以带来很多设计上的好处,设计一个cat类时,Animal类提供了很多所需要的功能,通过继承Animal对象cat已经具备成为一个真正哺乳动物的所有属性和行为,为了使它成为更具体的cat cat类必须包含所特有的属性和行为
Class <? super T > getSuperClass():返回本类的父类
Type getGenericSuperClass();返回本类的父类,包含泛型参数信息
isAssignableForm<Class<?> cls>
判定此class对象所表示的类或接口与指定的class参数所表示的类或接口是否相同,或是否是其超类或超接口
package com.kettas.haofeng.test;
public class ClassA<T> {
private T obj;
public void setObject(T obj) {
this.obj = obj;
}
public T getObject() {
return obj;
}
}
package com.kettas.haofeng.test;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
public class Test <T> extends ClassA <T> {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("==============getSuperClass=====================");
System.out.println(Test.class.getSuperclass().getName());
System.out.println("====================getGenericSuperClass=============");
Type type=Test.class.getGenericSuperclass();
System.out.println(type);
if(ParameterizedType.class.isAssignableFrom(type.getClass())){
System.out.println("------------->getActualTypeArguments:");
for(Type t1:((ParameterizedType)type).getActualTypeArguments()){
System.out.println(t1+",");
}
System.out.println();
}
}
}
==============getSuperClass=====================
com.kettas.haofen.test.ClassA
====================getGenericSuperClass=============
com.kettas.haofen.test.ClassA<T>
------------->getActualTypeArguments:
T,
分享到:
相关推荐
*建立一个超类House, 和一个子类Home,并提供一系列属性和方法,包括printDetails方法, 这个方法要采用多态性 *建立一个House和Home的异类集合, 测试printDetails方法的多态性
【IT十八掌徐培成】Java基础第25天-03.递归获取所有超类-内省获取所有属性-getter-setter.zip
默认情况下,有一些数字值类,它们也具有通用的超类java.lang.Number。 但是,运算符(即+-*和/)未在Number中定义,而是在子类中定义。 在BigInteger和BigDecimal类的情况下,存在相应的方法。 这与在类层次结构的...
3.输入"this."时,会显示当前类和超类的所有相关函数和属性. 4.输入"new "时,会显示当前类所有相关构造函数, 输入类名点,会显示所有相关静态函数和属性. 5.输入"{"时,代码编辑区将会自动输入另一个"}",当时插入一个...
java核心技术,基础篇一个对象变量可以引用对种实际类型的现象被叫做多态,对象变量遵行置换法则:超类对 象的任何地方都可以用子类对象置换,但是声明为类型为超类对象的变量就算引用了一个子 类的对象,用该引用还是不...
这是有关java的编码规范,可以让我们知道在java中的编码规范所需要主要的问题
//图形图像的所有类的超类。必须以特定于平台的方式获取图像。 import java.awt.geom.AffineTransform; import java.io.*;//数据流、序列化和文件系统提供系统输入和输出 import java.util.ArrayList;//最大限度地...
《JAVA程序设计》模拟题 一.判断题 1、Boolen变量值可以是0或1 ( ) 2、在Java中,整型的大小是不固定的。一些编译器使用2字节的整型,而其它编译器则 使用4字节 ( ) 3、运算符 ++ 的优先级高于运算符 + ( ) 4、将...
(4) extends 子句用于说明类的直接超类。 (5) implements 子句用于说明类中将实现哪些接口,接口是 Java 的一种引用类 型。 (6) 类体包含了变量和方法。在类体中定义的数据、变量和方法称为类的成员, 或称为...
而equals方法是属于超类Object的方法,其实默认情况下也是用==比较,只是很多类重写了equals这个方法,实现了值比较,所以我们一般用equals比较的都是值。补充一点,在运行速度上,equals比= = 慢。 Java有没有goto...
java 简单性 Java看起来设计得很像C++,但是为了使语言小和容易熟悉,...类是按一定体系和层次安排的,使得子类可以从超类继承行为。在这个类层次体系中有一个根类,它是具有一般行为的类。Java程序是用类来组织的。
3.输入"this."时,会显示当前类和超类的所有相关函数和属性. 4.输入"new "时,会显示当前类所有相关构造函数, 输入类名点,会显示所有相关静态函数和属性. 5.输入"{"时,代码编辑区将会自动输入另一个"}",当时插入一个...
java 简单性 Java看起来设计得很像C++,但是为了使语言小和容易熟悉,...类是按一定体系和层次安排的,使得子类可以从超类继承行为。在这个类层次体系中有一个根类,它是具有一般行为的类。Java程序是用类来组织的。
1.2 java命令 1.3 编写命令行工具 1.4 测试本章代码 1.5 本章小结 第2章 搜索class文件 2.1 类路径 2.2 准备工作 2.3 实现类路径 2.3.1 Entry接口 2.3.2 DirEntry 2.3.3 ZipEntry 3 2.3.4 ...
java 简单性 Java看起来设计得很像C++,但是为了使语言小和容易熟悉,...类是按一定体系和层次安排的,使得子类可以从超类继承行为。在这个类层次体系中有一个根类,它是具有一般行为的类。Java程序是用类来组织的。
超类,子类有时候成为派生类;extends 继承类限制:在使用继承类的时 候虽然可以扩充类的功能,但是其本身也存在以下限制:在java 中不允 许多重继承:一个子类只能继承一个父类,不能继承多个父类; 在java 中允许...
java 简单性 Java看起来设计得很像C++,但是为了使语言小和容易熟悉,...类是按一定体系和层次安排的,使得子类可以从超类继承行为。在这个类层次体系中有一个根类,它是具有一般行为的类。Java程序是用类来组织的。
java基础200题 java基础200题 java基础200题java基础200题
java基础必写的游戏之一,包含所有的java基础元素。超类的构造,接口的实现