zoukankan      html  css  js  c++  java
  • Java关键字——instanceof

    Java中可以使用instanceof关键字判断一个对象到底是哪一个类的实例

    格式:对象 instance 类  返回 boolean类型

    通过子类实例化的对象同时是子类和父类的实例,无论是直接声明子类还是声明了父类,然后再通过子类向上转型

    如果直接通过父类实例化本类对象,则一定不是子类的实例

    //=================================================
    // File Name       :	ploy_up_demo
    //------------------------------------------------------------------------------
    // Author          :	Common
    
    // 类名:C_1
    // 属性:
    // 方法:
    class C_1{												// 定义接口C_1
    	public void fun1(){							//定义fun1()方法
    		System.out.println("C_1--->public void fun1");
    	}
    	
    	public void fun2(){							//定义fun2()方法
    		this.fun1();
    	}
    }
    
    //类名:D_1
    //属性:
    //方法:
    class D_1 extends C_1{												//子类D_1继承父类C_1
    	public void fun1(){
    		System.out.println("D_1--->public void fun1");	//覆写父类中的fun1()方法
    	}
    	
    	public void fun3(){													
    		System.out.println("D_1--->public void fun3");	//子类自己定义方法
    	}
    }
    
    //类名:E_1
    //属性:
    //方法:
    class E_1 extends C_1{												//子类E_1继承父类C_1
    	public void fun1(){
    		System.out.println("E_1--->public void fun1");	//覆写父类中的fun1()方法
    	}
    	
    	public void fun5(){													
    		System.out.println("E_1--->public void fun3");	//子类自己定义方法
    	}
    }
    
    
    //主类
    //Function        : 	对象的多态性,对象向上转型
    public class ploy_up_demo {
    
    	public static void main(String[] args) {
    		// TODO 自动生成的方法存根
    //		D_1 b = new D_1();			//定义子类的实例化对象
    //		C_1 a = b;						//声明一个父类,发生向上转型的关系,子类赋值给父类
    //		a.fun1();							//此方法被子类覆写过,虽然a是父类,但是调用的是子类的fun1()方法
    		
    //		C_1 c = new D_1();			//声明一个父类,发生了向上转型,子类赋值给父类
    //		D_1 d = (D_1)c;				//声明的父类强制转换成子类,发生了向下转型关系
    //		d.fun1();
    //		d.fun2();
    //		d.fun3();
    		
    //		fun(new C_1());							//传递C_1类的实例,产生向上转型
    //		fun(new D_1());							//传递D_1类的实例,产生向上转型
    		
    		C_1 a = new D_1();						//发生向上转型
    		System.out.println("C_1 a = new D_1():"+(a instanceof C_1));
    		System.out.println("C_1 a = new D_1():"+(a instanceof D_1));
    		
    		C_1 a_1 = new C_1();					//声明一个父类
    		System.out.println("C_1 a = new C_1():"+(a_1 instanceof C_1));
    		System.out.println("C_1 a = new C_1():"+(a_1 instanceof D_1));
    		
    		D_1 a_2 = new D_1();						//声明一个子类
    		System.out.println("D_1 a = new D_1():"+(a_2 instanceof C_1));
    		System.out.println("D_1 a = new D_1():"+(a_2 instanceof D_1));
    	}
    	
    	public static void fun(C_1 c){	//接收父类对象,不用写多次分别接收子类对象
    		c.fun1();
    	}
    }
    
  • 相关阅读:
    Sql 行转换列(列转换行), JavaScript解决思路
    c# 异步线程
    C# 读取数据库存储过程返回值 笔记
    利用UtilityLibrary.dll WeifenLuo.WinFormsUI.Docking.dll控件创建工具栏效果
    关于C#Winform线程调用窗体的使用方法以及窗体的单一显示
    通过调用API函数实现的无边框窗体的拖拽,比判断坐标更快捷
    ubuntu下安装redis
    ubuntu下安装beanstalkd
    preg_match_all 执行一个全局正则表达式匹配
    mongodb的安装和进入
  • 原文地址:https://www.cnblogs.com/tonglin0325/p/5240104.html
Copyright © 2011-2022 走看看