在继承关系中,不管父类还是子类,这些类里面的this都代表了最终new出来的那个类的实例对象,所以在父类中你可以用this获取到子类的信息!

package com.urthinker.module.test;
import org.junit.Test;
abstract class BaseDao<T> {
	public void getType() {
		System.out.println(this.getClass().getName()); //com.**.test.SubDao
public class SubDao extends BaseDao<String> {
	@Test
	public void test1() {
		getType();
 

http://zhidao.baidu.com/link?url=9t24VdT4G63Z7-p6kNHR_WiBFRxRVYMYdmOmREJ_0F-cSDxPsrq0fgyJsq6Bv3uSpsOTH1QPH1YLV5S5cXJhRoRg8KIBHohw2F3DfcA6TK7

java 中父类引用指向子类对象时

http://blog.csdn.net/liu_zhen_wei/article/details/6889810 

在继承关系中,不管父类还是子类,这些类里面的this都代表了最终new出来的那个类的实例对象,所以在父类中你可以用this获取到子类的信息!package com.urthinker.module.test;import org.junit.Test;abstract class BaseDao&amp;lt;T&amp;gt; { public void getType(...
1.Java的源代码中定义几个类,编译结果就生成几个以.class为后缀的字节码文件.( √ ) 2.Java程序里,创建新的类对象用关键字new,回收无用的类对象使用关键字free. ( × ) 3.Java有垃圾回收机制,内存回收程序可在指定的时间释放内存对象. ( × ) 4.构造函数用于创建类的实例对象,构造函数名应与类名相同,返回类型为void. ( × ) 5.在异常处理中,若try中的代码可能产生多种异常则可以对应多个catch语句,若catch中的参数类型有父类子类关系,此时应该将父类放在后面,子类放在前面. ( √ ) 6.拥有abstract方法的类是抽象类,但抽象类中可以没有abstract方法. ( √ ) 7.Java的屏幕坐标是以像素为单位,容器的左下角被确定为坐标的起点. ( × ) 8.静态初始化器是在其所属的类加载内存时由系统自动调用执行. ( √ ) 9.在Java中对象可以赋值,只要使用赋值号(等号)即可,相当于生成了一个各属性与赋值对象相同的新对象. ( × ) 10.只能利用Thread类的子类来创建线程. ( × ) 1.按以下要求编写程序 (1) 创建一个Rectangle类,添加width和height两个成员变量. (2) 在Rectangle中添加两种方法分别计算矩形的周长和面积. (3) 编程利用Rectangle输出一个矩形的周长和面积. 3.编写一个程序:在控制台中窗口中提示输入两个整数,然后接收这两个整数,并输出它们的和.下面是运行过程的示例: 请输入第一个整数:45 请输入第二个整数:23 计算结果:45+23=68. 1.构造函数调用   常用初始化列表  或者显示调用 1.1同一个类中构造函数调用构造函数   尽量不要这样做,因为结果不确定!避免麻烦 可以把共用的代码封装成一个私有的成员函数,然后在构造函数内统一调用。 1.2子类构造函数调用基类构造函数 —–基类有默认构造函数时,可以在子类不写,则隐式调用 —–基类无/有默认构造函数时,在子类构造函数初始化列表处调用,则显示调用     基类类名(参数) class Base public: Base(int b) : m_b(b) private: int m_b
2. 继承:可以复用代码,缩短开发周期,节约成本 就是扩展已有类的功能,在继承中分为子类父类父类有时候又称为 超类,子类有时候成为派生类;extends 继承类限制:在使用继承类的时 候虽然可以扩充类的功能,但是其本身也存在以下限制:在java 中不允 许多重继承:一个子类只能继承一个父类,不能继承多个父类; 在java 中允许多层继承,在继承中子类不能访问父类中的私有操作,而 只能继承全部的公有操作,对于私有内容不能直接访问,但是可以通过 其他途径访问 在实例化子类对象时 2.堆内存:new出来的 栈内存:基本数据类型的变量,方法的返回值,对象的引用(对象的引用地址) 3.static:存放在静态域中和类属于同一个属性,修饰的方法:类名.static 4.Java多态的体现方式方法的重载,重写,对象的多态性 1.编译时的多态:方法重载(个数、类型、顺序) 2.运行时多态:重写,对象的多态性(父类的引用指向子类的实例) 5.CSDN 1.泛型的好处 保护类型安全 避免强制类性转化 2.final 1.修饰的属性是常量 2.修饰的方法不能被重写 3.修饰的类不能被继承 String
在做网站开发的时候我们都会写一个控制器,控制器的作用就是接收客户端的请求,有时候为了控制访问入口的唯一性,方便我们监控用户访问的数据;最近在抽时间写一个底层转发控制器请求的工具,说通俗一点就是首先我定义一个抽象类或者接口A(实现类A就标识为控制器),然后定义很多继承或者实现了A类的类B(用户真正的Controller); 1.定义一个抽象类作为所有控制器的父类 package thread;
设计一个包含5个类的Java程序,名为Person的父类有两个子类,学生类Student和员工类Employee。Employee类有两个子类,教师类Faculty和 职员类Staff。所有人都有编号ID、姓名、地址、电话号码和电子邮件地址。学生类Student有班级状态(大一、大二、大三或大四)。教师类Faculty有主讲课程、上课时间、专业信息。职员类Staff有职务、入职日期信息。覆盖每个类中的toString()方法,输出相应的类名、编号ID和姓名。 编写一个测试程序,随机创建8个Student、Faculty或Staff对象,放在一个数组或者Vector类对象中,依次调用他们的toString()方法显示信息。
33.java.lang.OutOfMemoryError 内存不足错误。当可用内存不足以让Java虚拟机分配给一个对象时抛出该错误。 34.java.lang.StackOverflowError 堆栈溢出错误。当一个应用递归调用的层次太深而导致堆栈溢出时抛出该错误。 35.java.lang.ThreadDeath 线程结束。当调用Thread类的stop方法时抛出该错误,用于指示线程结束。 36.java.lang.UnknownError 未知错误。用于指示Java虚拟机发生了未知严重错误的情况。 37.java.lang.UnsatisfiedLinkError 未满足的链接错误。当Java虚拟机未找到某个类的声明为native方法的本机语言定义时抛出。 38.java.lang.UnsupportedClassVersionError 不支持的类版本错误。当Java虚拟机试图从读取某个类文件,但是发现该文件的主、次版本号不被当前Java虚拟机支持的时候,抛出该错误。 39.java.lang.VerifyError 验证错误。当验证器检测到某个类文件中存在内部不兼容或者安全问题时抛出该错误。 40.java.lang.VirtualMachineError 虚拟机错误。用于指示虚拟机被破坏或者继续执行操作所需的资源不足的情况。 41.java.lang.ArithmeticException 算术条件异常。譬如:整数除零等。 42.java.lang.ArrayIndexOutOfBoundsException 数组索引越界异常。当对数组的索引值为负数或大于等于数组大小时抛出。 43.java.lang.ArrayStoreException 数组存储异常。当向数组中存放非数组声明类型对象时抛出。 44.java.lang.ClassCastException 类造型异常。假设有类A和B(A不是B的父类子类),O是A的实例,那么当强制将O构造为类B的实例时抛出该异常。该异常经常被称为强制类型转换异常。 45.java.lang.ClassNotFoundException 找不到类异常。当应用试图根据字符串形式的类名构造类,而在遍历CLASSPAH之后找不到对应名称的class文件时,抛出该异常。 46.java.lang.CloneNotSupportedException 不支持克隆异常。当没有实现Cloneable接口或者不支持克隆方法时,调用其clone()方法则抛出该异常。 47.java.lang.EnumConstantNotPresentException 枚举常量不存在异常。当应用试图通过名称和枚举类型访问一个枚举对象,但该枚举对象并不包含常量时,抛出该异常。 48.java.lang.Exception 根异常。用以描述应用程序希望捕获的情况。 49.java.lang.IllegalAccessException 违法的访问异常。当应用试图通过反射方式创建某个类的实例、访问该类属性、调用该类方法,而当时又无法访问类的、属性的、方法的或构造方法的定义时抛出该异常。
private static Set<Class<?>> getInstances(Class supClass) { String aPackage = ClassUtil.getPackage(supClass); Set<Class&lt
public final class ReflectionUtils { public static Method getDeclaredMethod(Object object, String methodName, Class<?> ... parameterTypes){ Method method = null ; for(Class<?> clazz = object.getClass() ; clazz != Object.cla
Java中,父类可以通过向下转型(downcasting)的方式转化为子类。具体实现方式是在子类前加上强制类型转换符号,例如: 子类名 变量名 = (子类名) 父类变量名; 需要注意的是,如果父类变量实际上指向的是子类对象,那么转换就会成功,否则就会抛出ClassCastException异常。因此,在进行向下转型时,需要先使用instanceof运算符判断父类变量是否指向了子类对象。