博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
instanceof关键字
阅读量:7078 次
发布时间:2019-06-28

本文共 1638 字,大约阅读时间需要 5 分钟。

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

 

class A{					// 定义类A	public void fun1(){		// 定义fun1()方法		System.out.println("A --> public void fun1(){}") ;	}	public void fun2(){		this.fun1() ;		// 调用fun1()方法	}};class B extends A{	public void fun1(){		// 此方法被子类覆写了		System.out.println("B --> public void fun1(){}") ;	}	public void fun3(){		System.out.println("B --> public void fun3(){}") ;	}};public class InstanceofDemo01{	public static void main(String asrgs[]){		A a1 = new B() ;		// 通过向上转型实例化对象		System.out.println("A a1 = new B():" + (a1 instanceof A)) ;		System.out.println("A a1 = new B():" + (a1 instanceof B)) ;		A a2 = new A() ;		// 通过向上转型实例化对象		System.out.println("A a2 = new A():" + (a2 instanceof A)) ;		System.out.println("A a2 = new A():" + (a2 instanceof B)) ;//false	}};

对于向下转型操作,最好增加验证,以保证转型时不会发生ClassCastException。

 

一个类永远不要去继承一个已经实现好的类。而只能继承抽象类或实现接口。

 

class A{					// 定义类A	public void fun1(){		// 定义fun1()方法		System.out.println("A --> public void fun1(){}") ;	}	public void fun2(){		this.fun1() ;		// 调用fun1()方法	}};class B extends A{	public void fun1(){		// 此方法被子类覆写了		System.out.println("B --> public void fun1(){}") ;	}	public void fun3(){		System.out.println("B --> public void fun3(){}") ;	}};class C extends A{	public void fun1(){		// 此方法被子类覆写了		System.out.println("C --> public void fun1(){}") ;	}	public void fun5(){		System.out.println("C --> public void fun5(){}") ;	}};public class InstanceofDemo02{	public static void main(String asrgs[]){		fun(new B()) ;		fun(new C()) ;	}	public static void fun(A a){		a.fun1() ;		if(a instanceof B){			B b = (B) a ;			b.fun3() ;		}		if(a instanceof C){			C c = (C) a ;			c.fun5() ;		}	}};

 

 

你可能感兴趣的文章
三大UML建模工具Visio、Rational Rose、PowerDesign的区别
查看>>
arcengine坐标转换[转]
查看>>
JavaScript 中定义变量时有无var声明的区别
查看>>
设计模式 -- 代理模式(Proxy)
查看>>
转:偶实现了贴图和表情的聊天
查看>>
Git笔记-基础
查看>>
c# 数据库编程(利用DataSet 和 DataAdaper对象操作数据库--单表操作)
查看>>
HTTP调试 抓包 工具 Fiddle 简介 示例
查看>>
驾考宝典排行榜之爬虫接口解决方案
查看>>
linux日志(常用命令)
查看>>
history
查看>>
Leetcode: Arranging Coins
查看>>
HttpUtil 【判断网络连接的封装类】
查看>>
【转】TCP分段与IP分片
查看>>
iOS 多线程 NSOperation、NSOperationQueue
查看>>
delphi执行查询语句时的进度条怎么做
查看>>
CF 335A(Banana-贪心-priority_queue是大根堆)
查看>>
python的memcache使用如果对key设置了一个int型
查看>>
Leetcode: Longest Substring with At Most Two Distinct Characters
查看>>
173. Binary Search Tree Iterator
查看>>