public class Father {
static {
System.out.println("static Father");
}
Father(){
System.out.println("construction Father");
}
}
public class Son extends Father{
static {
System.out.println("static Son");
}
Son(){
System.out.println("construction Son");
}
}
public class Test {
public static void main(String[] args) {
Father fa=new Son();
System.out.println(Test.getName(fa));
}
static String getName(Father fa){
if(fa instanceof Son){
return "Variable is Son Type.";
}
return "Variable is Father Type.";
}
}
最终会打印出:
static Father
static Son
construction Father
construction Son
Variable is Son Type.
最后一句说明传的参数就是完全子类对象了。
分享到:
相关推荐
类加载器在Java环境中起到了桥梁的作用,它们不仅负责将类加载到内存中,还确保了类的正确加载顺序和唯一性。通过理解启动类加载器、扩展类加载器和应用程序类加载器的职责以及双亲委托模型的工作原理,开发者能够更...
在 Java 中,子类父类的加载顺序是: 1. 创建第一个子类对象时:父类静态块->被调子类静态块->父类动态块->父类无参构造器->被调子类动态块->被调子类无参构造器 2. 创建第一个另一个子类对象时:被调子类静态块->...
- **覆盖**(Overriding):发生在父子类之间,方法名、参数列表和返回类型完全相同。 ### 11. 抽象类与接口的区别 - **抽象类**:可以包含抽象方法和具体方法;只能单继承。 - **接口**:所有方法默认都是抽象的...
- **重写:** 发生在父子类之间,要求方法名、参数列表完全一致,且子类方法的返回类型需小于等于父类方法的返回类型,抛出的异常也要小于等于父类方法的异常。此外,子类方法的访问修饰符需大于等于父类方法的访问...
继承,用于定义类之间的父子关系,子类继承父类的属性和方法。 ### false 布尔值,表示逻辑上的“假”,与`true`相对。 ### final 最终,用于修饰不可变的变量或方法,一旦赋值后不能修改。 ### finally 最终...
- 重写发生在父子类之间,方法名、参数列表和返回类型完全相同。 - 重载发生在同一个类中,方法名相同但参数列表不同。 - **重载能否改变返回值类型**:不可以。 #### 21. static关键字 - **定义**:用于声明静态...
8. **Object**: 对象,类的实例,具有类所定义的特性和行为。 9. **System**: 系统,Java中的一个内置类,提供了与系统相关的操作,如标准输入/输出。 10. **out**: System类中的一个静态成员,用于输出到标准输出...
了解这些类型的基本属性和它们的包装类如何工作,对于理解自动装箱和拆箱至关重要。 2. **`switch` 能否用 `String` 做参数?**: - 自 Java 7 开始,`switch` 语句支持 `String` 类型作为其条件表达式的一部分。...
当catch块的参数类型有父子类关系时,通常子类捕获应放在前面,因为子类可以捕获父类类型的异常,但反之不行。 4. 在Windows系统中,"?"按钮通常用于帮助提示,而不是输入问号。 5. Excel2003中,数字默认是右对齐...
基于父类:代理对象与目标对象是父子关系.目标不能被final修饰 修改默认代理方法: 增强种类 前置通知 后置通知 异常通知 最终通知 环绕通知 注意:使用注解的方式,最终通知和后置通知顺序换了,建议...
第3~9行定义了一个数据源,其实现类是apache的BasicDataSource,第11~25行定义了Hibernate的会话工厂,会话工厂类用Spring提供的LocalSessionFactoryBean维护,它注入了数据源和资源映射文件,此外还通过一些键值...