美文网首页
JAVA:向下转型和instanceof运算符的应用

JAVA:向下转型和instanceof运算符的应用

作者: 确认过眼神啊 | 来源:发表于2020-09-12 11:42 被阅读0次

知识梳理

一:向下转型

1.向下转型:向下转型是与向上转型相对的概念,他是用子类引用指向父类实例.
如:

Animal animal = new Dog();
Dog d = animal;// 报错

这时就告诉我们向下转型不能自动转换,我们需要强转,所以向下转型又叫做强制类型转换.
正确的转换语句为:

Animal animal = new Dog();
Dog dog = (Dog)animal;

2.向下转型后,可以调用子类自己独有的方法.

public class Animal{
   String name;
   int age;
   public Animal(){
    
   }
   public void eat(){
     System.out.println("animal吃东西");
   }

    public static void die(){
            System.out.println("animal死亡");
        }
}
public class Dog extends Animal{
      String favoriteFood;
       public void eat(){
           System.out.println("吃肉");
        }
        public void run(){
            System.out.println("夕阳下奔跑的小狗");
        }
        public static void die(){
            System.out.println("dog死亡");
        }
 }
public static void main(String[] args){
    Animal animal = new Dog(); // 向上转型
    Dog dog = (Dog)animal; // 强制类型转换
    dog.run(); // 调用子类独有的方法
    
}

3.兄弟类之间不能进行强制类型转换.

public class Cat extends Animal{

}
public static void main(String[] args){
      Animal animal = new Cat(); // 向上转型
      Dog dog = (Dog)animal; // 编译时不报错误,运行时会包错误: 
}

错误如下:


1.png

二:instanceof运算符

1.基本概念
instanceof 运算符用来判断对象是否可满足某个特定类型实例特征.返回值为true/false.一般用于if语句中
表示方法为:


2.png
boolean result;
Animal animal = new Dog();
result = animal instanceof Dog; // result 结果为true
// 如果左边对象是右边类的实例则返回true,否则返回false

2.instanceof运算符的应用
1)用instanceof运算符来判断对象是否可满足某个特定类型实例特征

// 例子:父类Parents类、Father类和Mother类分别为它的两个子类:
// 实例化对象
Parents father = new Father();
Parents mother = new Mother();
// 用instanceof运算符判断对象是否满足某个特定对象实例特征
System.out.println(mother instanceof Father);
System.out.println(mother instanceof Mother);
System.out.println(mother instanceof Object);
System.out.println(father instanceof Father);

输出结果为:
false
true
true
true
注:java中所有类都直接或间接继承于Object类.

相关文章

  • JAVA:向下转型和instanceof运算符的应用

    知识梳理 一:向下转型 1.向下转型:向下转型是与向上转型相对的概念,他是用子类引用指向父类实例.如: 这时就告诉...

  • kotlin精讲-第2章(7)is、!is、as、as?运算符

    Kotlin相比于Java 目标 类型检查(is和!is运算符) 回顾Java中instanceof 在Java ...

  • java多态(重要O!)

    一、多态的语法 关于java语言中的向上转型和向下转型 1、向上转型(upcasting):子 -->父 2、向下...

  • Java程序的基本结构 -- 运算符的优先级

    Java中特殊的运算符 instanceof 检查是否是类的对象 栗子:"Hello" instanceof St...

  • java中的关键字(笔记)

    instanceof:(实例运算符)java中的instanceof运算符是用来运行时指出对象是否是特定类的一个实...

  • 面向对象基础

    为了避免向下转型出错,Java提供了instanceof操作符,可以先判断一个实例究竟是不是某种类型。可以使用in...

  • 多态

    Java语言中的向上转型和向下转型, 1向上转型 (upcasting)子———>父 自动类型转换 2 ...

  • 6. 类型检测与类型转换

    1. is运算符和!is运算符 is运算符类似Java中的instanceof,在运行时可以检查对象是否与特定的类...

  • 8.0java 引用类型转换

    向上类型转换(小到大) 向下类型转换(大到小) instanceof运算符,解决引用对象的类型

  • java向上转型和向下转型

    java对象的类型转换对于初学者来说很多时候是蒙的,例如当初开始学的我,#手动狗头。在整理以前学的笔记的时候看到了...

网友评论

      本文标题:JAVA:向下转型和instanceof运算符的应用

      本文链接:https://www.haomeiwen.com/subject/iwjjektx.html