`

instanceof 的 测试 例子 ( 帮助理解 instance 用法 和 继承 的关键点 )

    博客分类:
  • JAVA
 
阅读更多
//AA是基类
class AA {
public void print() {
   System.out.println("AA's print()");
}
public void aMethod() {
   System.out.println("AA's aMethod()");
}
}

//BB是AA的子类
public class BB extends AA {
public void print() {
   System.out.println("BB's print()");
}
public void bMethod() {
   System.out.println("BB's bMethod()");
}
public static void main(String[] args) {
 
   System.out.println("***1***");
   AA aa = new AA();
   aa.print();
   System.out.println(aa instanceof BB);
   System.out.println(aa instanceof AA);
   aa.aMethod();
   //aa.bMethod(); 不能调用
   System.out.println();
 
   System.out.println("***2***");
   BB bb = new BB();
   bb.print();
   System.out.println(bb instanceof BB);
   System.out.println(bb instanceof AA);
   bb.aMethod();
   bb.bMethod();
   System.out.println();
 
   System.out.println("***3***");
   AA cc = (AA) bb;
   cc.print();
   System.out.println(cc instanceof BB);
   System.out.println(cc instanceof AA);
   cc.aMethod();
   //cc.bMethod(); 不能调用
   System.out.println();
 
   System.out.println("***4***");
   AA dd = new BB();
   dd.print();
   System.out.println(dd instanceof BB);
   System.out.println(dd instanceof AA);
   dd.aMethod();
   //dd.bMethod(); 不能调用
   System.out.println();
 
   System.out.println("***5***");
   cc = new AA();
   cc.print();
   System.out.println(cc instanceof BB);
   System.out.println(cc instanceof AA);
   cc.aMethod();
   System.out.println();
}
}

--------------------------------------------------------------------------------------------------
下面是测试结果:

***1***
AA's print()
false
true
AA's aMethod()

***2***
BB's print()
true
true
AA's aMethod()
BB's bMethod()

***3***
BB's print()
true
true
AA's aMethod()

***4***
BB's print()
true
true
AA's aMethod()

***5***
AA's print()
false
true
AA's aMethod()


----------------------------------------------------------------------------------------------------------------

小结:
1.instanceof 作用是测试它左边的对象是否是它右边的类的实例.
2.继承: A是基类,B是A的子类.如果A a=new B(); 则a只能调用A类的方法,如果B类有重写A类的方法,则a调用的方法其实是B类重写的方法.
3.继承: 由测试3和测试4结果一样,可以得知,AA cc = (AA) bb; (bb是BB引用类型)和 AA dd = new BB(); 中 cc 和 dd 性质是完全一样的. AA cc = (AA) bb; 相当于 AA cc = new BB();


分享到:
评论

相关推荐

    instanceof 和 prototype 关系

    在JavaScript中,`instanceof`和`prototype`是两个非常重要的概念,它们涉及到对象的类型检测和继承机制。本文将深入探讨这两个关键字的关系及其在实际编程中的应用。 首先,我们来理解`instanceof`操作符。`...

    JS中typeof与instanceof的区别

    使用 typeof 和 instanceof 还有其他一些区别,例如 alert(typeof(window)) 会得 object,但 window 不是一个 object 类型的对象,而是一个 Window 对象。 typeof 和 instanceof 都是 JavaScript 中的基本运算符,...

    Instance of Subclass, Subclass, Instance of Superclass, Superclass,

    在这个例子中,`Subclass` 是 `Superclass` 的子类,它继承了 `Superclass` 的所有公共属性和方法。 接下来,"Instance of Subclass" 和 "Instance of Superclass" 描述的是对象的类型。当我们创建一个子类的实例时...

    PHP强制对象类型之instanceof操作符

    在这个例子中,`generatePage`方法通过类型提示确保了传入参数的类型,然后使用`instanceof`进一步确认。 ### 总结 `instanceof`操作符是PHP 5面向对象编程中一个重要的工具,它使得开发者能够有效地验证和控制...

    向下转型和instanceof运算符的应用.pdf

    在面向对象编程中,向下转型和`instanceof`运算符是两种重要的概念,尤其是在多态性的实现中扮演关键角色。本文将深入探讨这两个主题,并结合Delphi编程语言的背景进行阐述,尽管`instanceof`运算符在Java中更为常见...

    instanceof关键字.md

    本文将详细解释`instanceof`的关键特性和使用场景,并通过示例代码加深理解。 #### 一、基本概念 `instanceof`的关键作用在于类型检查,即判断一个对象是否属于指定的类或接口类型。其语法结构为: ```java ...

    08-手写instanceof.md

    在前端面试中,手写instanceof不仅考察了应聘者对JavaScript原型链和继承机制的理解,还考察了其编程逻辑思维和代码实现能力。通过这种方式,面试官可以评估应聘者是否具备编写高质量代码的基础素质。因此,掌握...

    详解JavaScript中typeof与instanceof用法

    JavaScript中,数据类型的检测是编程中一个...理解这两种方式的区别和适用场景,能够帮助我们编写更加健壮和可靠的代码。在实际应用中,合理选择使用哪种类型检测方法,可以避免很多因类型不匹配导致的bug和异常情况。

    java学习-java中的继承extents和instanceof关键字

    java学习-java中的继承extents和instanceof关键字

    实例讲解JavaScript中instanceof运算符的用法

    在JavaScript中,`instanceof`运算符是用来检测一个对象是否属于某个构造函数的实例,或者更具体地说,是否在该对象的原型链上能找到构造函数的`...正确理解和运用`instanceof`可以帮助我们编写更加健壮和准确的代码。

    JS:typeof instanceof constructor prototype区别

    在JavaScript(JS)编程语言中,确定变量或对象的类型是一项基本且重要的任务。这不仅有助于理解代码的行为,还能在调试、数据验证以及...理解并灵活运用这些方法,可以帮助开发者编写更加健壮和高效的JavaScript代码。

    Java instanceof用法详解及实例代码

    Java中的`instanceof`运算符是用来在程序运行时判断一个对象是否属于某个特定类或其子类(或者实现了某个接口)的关键字。它允许我们动态地检查对象的...了解并熟练使用`instanceof`可以帮助编写更安全、灵活的代码。

    Java中instanceOf关键字的用法及特性详解.rar

    在Java编程语言中,`instanceof`关键字是一个非常重要的工具,它用于判断对象是否属于某个类、接口或者其子类。...在编写多态代码时,尽量依赖于接口和继承的性质,而不是依赖于`instanceOf`的检查。

    js中的instanceof操作符1

    这个操作符对于理解和处理对象继承关系非常关键。 首先,我们要明白`instanceof`的基本用法。假设我们有两个构造函数`C`和`D`: ```javascript function C() {} function D() {} ``` 如果我们创建了一个`C`的实例...

    关于js继承笔记.doc

    在组合继承中,子类型同时使用原型链继承父类的原型方法,并通过构造函数继承父类的实例属性。这样,子类型既能从原型继承共享方法,也能通过父类构造函数初始化自己的属性。例如,`SubType` 既调用了 `SuperType....

    java基础——方法的重写、多态+instanceof(csdn)————程序.pdf

    在Java中,方法重写有以下几个关键点: 1. 子类必须继承父类。 2. 重写的方法名必须与父类方法完全相同。 3. 参数列表也要完全相同。 4. 修饰符的范围可以扩大,但不能缩小。例如,父类的一个受保护(protected)...

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

    在Android开发中,`instanceof`同样发挥着关键作用,尤其是在处理类之间的继承关系和多态性时。以下是关于`instanceof`在Java和Android中使用的详细解释: 首先,`instanceof`的基本用法是检查一个对象是否是右操作...

    Java instanceof关键字的的进一步理解

    Java的`instanceof`关键字是Java语言中用于判断对象类型的工具,它可以帮助程序员确定一个对象是否属于特定的类或者其子类(或接口)的实例。`instanceof`操作符的语法是`object instanceof ClassName`,其中`object...

Global site tag (gtag.js) - Google Analytics