package com.sf.s5;public class TextInstanceOf {
static class ObjectA{
static String A="Object";
}
static class ObjectB extends ObjectA{
static void showInfo(){
System.out.printf("超类的静态属性%s的值:%s%n","A",A);
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
ObjectA a=new ObjectA();
ObjectB b=new ObjectB();
//判断A是否是Object类型
if(a.A instanceof Object){
System.out.println("静态属性A是Object类型");
}else{
System.out.println("静态属性A不是Object类型");
}
//判断A是否是String类型
if(a.A instanceof String){
System.out.println("静态属性A是String类型");
}else{
System.out.println("静态属性A不是String类型");
}
//判断null是否是Object类型
if(null instanceof Object){
System.out.println("null是Object类型");
}else{
System.out.println("null不是object类型");
}
//判断对象a是否为ObjectA类型
if(a instanceof ObjectA){
System.out.println("对象a是ObjectA类型");
}else{
System.out.println("对象a不是ObjectA类型");
}
//
if(b instanceof ObjectA){
System.out.println("对象b是ObjectA类型");
}else{
System.out.println("对象b不是ObjectA类型");
}
//
if(a instanceof ObjectB){
System.out.println("对象a是ObjectB类型");
}else{
System.out.println("对象a不是ObjectB类型");
}
//
if(b instanceof ObjectB){
System.out.println("对象b是ObjectB类型");
}else{
System.out.println("对象b不是ObjectB类型");
}
}}
static class ObjectA{
static String A="Object";
}
static class ObjectB extends ObjectA{
static void showInfo(){
System.out.printf("超类的静态属性%s的值:%s%n","A",A);
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
ObjectA a=new ObjectA();
ObjectB b=new ObjectB();
//判断A是否是Object类型
if(a.A instanceof Object){
System.out.println("静态属性A是Object类型");
}else{
System.out.println("静态属性A不是Object类型");
}
//判断A是否是String类型
if(a.A instanceof String){
System.out.println("静态属性A是String类型");
}else{
System.out.println("静态属性A不是String类型");
}
//判断null是否是Object类型
if(null instanceof Object){
System.out.println("null是Object类型");
}else{
System.out.println("null不是object类型");
}
//判断对象a是否为ObjectA类型
if(a instanceof ObjectA){
System.out.println("对象a是ObjectA类型");
}else{
System.out.println("对象a不是ObjectA类型");
}
//
if(b instanceof ObjectA){
System.out.println("对象b是ObjectA类型");
}else{
System.out.println("对象b不是ObjectA类型");
}
//
if(a instanceof ObjectB){
System.out.println("对象a是ObjectB类型");
}else{
System.out.println("对象a不是ObjectB类型");
}
//
if(b instanceof ObjectB){
System.out.println("对象b是ObjectB类型");
}else{
System.out.println("对象b不是ObjectB类型");
}
}}
if(a.A instanceof Object){
System.out.println("静态属性A是Object类型");
}else{
System.out.println("静态属性A不是Object类型");
}
这段程序输出:
"静态属性A是Object类型".
因为a.A是个String对象,String继承自Object. 所以有上面结果。//判断A是否是String类型
if(a.A instanceof String){
System.out.println("静态属性A是String类型");
}else{
System.out.println("静态属性A不是String类型");
}
这段输出:
“静态属性A是String类型”,应该好理解。因为a.A就是个String对象。//判断null是否是Object类型
if(null instanceof Object){
System.out.println("null是Object类型");
}else{
System.out.println("null不是object类型");
}因为任何类的引用都可以赋值 null. 所以null应该不属于任何类(或不是任何类的对象)。//判断对象a是否为ObjectA类型
if(a instanceof ObjectA){
System.out.println("对象a是ObjectA类型");
}else{
System.out.println("对象a不是ObjectA类型");
}
这段程序输出:
“对象a是ObjectA类型”,这个最好理解。//
if(b instanceof ObjectA){
System.out.println("对象b是ObjectA类型");
}else{
System.out.println("对象b不是ObjectA类型");
}
这段程序输出:
“对象b是ObjectA类型”,
因为类ObjectB 继承自类ObjectA. (就象“北京人”一定是“中国人”一样。//
if(a instanceof ObjectB){
System.out.println("对象a是ObjectB类型");
}else{
System.out.println("对象a不是ObjectB类型");
}这段程序输出:
“对象a不是ObjectB类型”,也是最难理解的地方。
就象上面的,“中国人”不一定是“北京人”。个人理解。
System.out.printf("超类的静态属性%s的值:%s%n","A",A);
那这个输出的又是什么东东啊!~
A继承自父类的静态变量. 输出是: Object.这是在ObjectB类的方法里可以直接用A. 在类外常用类名引用。
ObjectB.A,或ObjectA.A.