Java面向对象高级--instanceof关键字

可以使用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() ;
		}
	}
};
时间: 2025-01-30 05:20:29

Java面向对象高级--instanceof关键字的相关文章

Java面向对象高级--final关键字

class A{ private final String INFO = "INFO" ; // 声明常量 public final void print(){ // 使用final声明的方法不能被覆写 INFO = "HELLO" ; } }; 常量必须在声明时为其明确指定内容. final声明的变量全部用大写字母形式,这也是命名规范. 即:常量全部必须大写. 全局常量: 使用static final关键字联合声明的变量称为全局常量: public static

Java中的instanceof关键字在Android中的用法实例详解_java

在下面介绍Android中如何使用instanceof关键字开发更方便时,先来温习一下java中instanceof的概念. instanceof大部分的概念是这样定义的:instanceof是Java的一个二元操作符,和==,>,<是同一类东西.由于它是由字母组成的,所以也是Java的保留关键字.它的作用是测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据.举个栗子: String s = "I AM an Object!"; boolean isObj

Java中的instanceof关键字

instanceof是Java的一个二元操作符,和==,>,<是同一类东东.由于它是由字母组成的,所以也是Java的保留关键字.它的作用是测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据.举个例子: String s = "I AM an Object!"; boolean isObject = s instanceof Object; 我们声明了一个String对象引用,指向一个String对象,然后用instancof来测试它所指向的对象是否是Obj

java final 和instanceof 关键字的区别_java

final 可以适用的范围:修饰类:使用这种修饰符的类无法被继承 修饰函数:被修饰的不能被重写 修饰属性:1.final修饰的成员变量是常量,值不能被修改      而java的命名规则:常量都要大写 当形参变量使用final修饰基本类型变量,在函数中该变量不能被修改   引用类型变量:不能改变地址 复制代码 代码如下: /* final class A{    public final void eat(){        System.out.println("测试");    }

Java面向对象高级--Object类

在Java中一切的类都是以继承的关系存在的, class Person{} 如果一个类在定义时,没有明确指明继承那个类,则默认继承Object类. class Person extends Object{} class Demo{ // 定义Demo类,实际上就是继承了Object类 }; public class ObjectDemo01{ public static void main(String args[]){ Demo d = new Demo() ; // 实例化Demo对象 Sy

Java面向对象高级--抽象类的基本概念------abstract

抽象类的概念: 包含一个抽象方法的类就称为抽象类. 抽象方法:只声明但未实现的方法称为抽象方法,使用abstract关键字声明. 抽象类的定义及使用规则: abstract class A{ // 是定义了一个抽象类 public static final String FLAG = "CHINA" ; // 全局常量 private String name = "XIAOWU" ; // 定义一个普通的属性 public void setName(String n

Java面向对象高级--实例分析—宠物商店

1.实例要求 实现一个宠物商店,在宠物商店中可以由多种宠物,(由用户决定数量).试表示出此种关系,并要求可以根据宠物的关键字查找到相应的宠物信息.所需要的宠物信息自行设计. 2.实例中主要使用到的知识点:接口.对象数组. 3.分析 interface Pet{ // 定义宠物接口 public String getName() ; public String getColor() ; public int getAge() ; } class Cat implements Pet{ // 猫是宠

Java面向对象基础--this关键字的解析

this关键字的作用: 1.表示类中的属性. class Person{ // 定义Person类 private String name ; // 姓名 private int age ; // 年龄 public Person(String name,int age){ // 通过构造方法赋值 this.name = name ; // 为类中的name属性赋值 this.age = age ;// 为类中的age属性赋值 } public String getInfo(){ // 取得信息

Java面向对象高级--继承的基本实现--extends

1.继承的基本概念 继承:子类继承父类,可以扩展已有类的功能. extends关键字:称为扩展,子类扩展一个类,子类有时候也称为派生类. class Person{ // 定义Person类 private String name ; // 定义name属性 private int age ; // 定义age属性 public void setName(String name){ this.name = name; } public void setAge(int age){ this.age