题目概述:
例题1:
1、一个Father类(父类)
2、一个Child类(extends Father)
3、一个Test类(测试类)
4、运行测试类main()函数
Father father = new Child();
father = new Child();
5、查看运行输出结果
例题2:
三目运算符:自动向高精度转换
package cn.hncu.obj;
/**
* 注:
* 1、一定先加载类(放在内存中)--对应的就是静态的东西
* 2、且类只加载一次
* 3、非静态方法,需要在被调用时才执行
*/
public class Test{
static int i=5;
public static void main(String[] args){
//============例题1(面试题)============//
// Child father = new Child(); 注意:这里不管是Child还是Father类接,
//都是先加载父类Father,再加载子类Child,在运行构造方法
Father father = new Child();
father = new Child();
//============例题2============//
//注:?表达式--如果":"号前面类型不一致,则自动向高精度转换
System.out.println( (change()==3)?i+15:i+10.0 );//18.0
System.out.println( (change()==3)?i+15:"abc" );//18
}
public static int change(){
if(i==5){
i = i+10;
}
return i = i/5;
}
}
class Father{
private void print() { //非静态方法,需要在被调用时才执行
System.out.println("111");
}
private int n = 0;
//若不给其赋值,则程序不会走这一句,赋值了才会走这一句,使用debug技术验证
public Father(){
super();
System.out.println("father...");
}
static{
System.out.println("静态块...father");
}
}
class Child extends Father{
public Child(){
super();
System.out.println("child...");
}
static{
System.out.println("静态块...child");
}
}
运行结果: