java对象类型转换实例分享

KLQ 2020-09-03 10:35:04 java常见问答 6065

之前给大家稍微的介绍了一下java对象类型转换,向上转型和向下转型方面的知识,那么下面要给大家分享的就是java对象类型转换的实例。

例:

父类Animal和子类Cat当中都定义了实例变量name、静态变量staticName、实例方法eat()和静态方法staticEat()。

除此之外,子类Cat中还定义了实例变量str和实例方法eatMethod()。

父类Animal代码:

public class Animal
{
    public String name = "Animal:动物";
    public static String staticName = "Animal:可爱的动物";
    public void eat()
    {
        System.out.println("Animal:吃饭");
    }
    public static void staticEat()
    {
        System.out.println("Animal:动物在吃饭");
    }
}

子类Cat代码:

public class Cat extends Animal
{
    public String name = "Cat:猫";
    public String str = "Cat:可爱的小猫";
    public static String staticName = "Dog:我是喵星人";
    public void eat()
    {
        System.out.println("Cat:吃饭");
    }
    public static void staticEat()
    {
        System.out.println("Cat:猫在吃饭");
    }
    public void eatMethod()
    {
        System.out.println("Cat:猫喜欢吃鱼");
    }
    public static void main(String[] args)
    {
        Animal animal = new Cat();
        Cat cat = (Cat) animal; // 向下转型
        System.out.println(animal.name); // 输出Animal类的name变量
        System.out.println(animal.staticName); // 输出Animal类的staticName变量
        animal.eat(); // 输出Cat类的eat()方法
        animal.staticEat(); // 输出Animal类的staticEat()方法
        System.out.println(cat.str); // 调用Cat类的str变量
        cat.eatMethod(); // 调用Cat类的eatMethod()方法
    }
}

通过引用类型变量来访问所引用对象的属性和方法的时候,Java虚拟机就会使用下面的绑定规则:

1、成员变量(包括静态变量和实例变量)和引用变量所声明的类型的成员变量绑定,这种绑定属于静态绑定,因为在编译阶段已经做了绑定。

例:

animal.name、animal.staticName都是和Animal类进行绑定。

2、静态方法和引用变量所声明的类型的方法绑定,这种绑定属于静态绑定,因为是在编译阶段已经做了绑定。

例:

animal.staticEat()是将staticEat()方法和Animal类进行绑定。

3、实例方法和引用变量实际引用的对象的方法进行绑定,这种绑定属于动态绑定,因为是在运行时由Java虚拟机动态决定的。

例:

animal.eat()是将eat()方法和Cat类绑定。

对于Cat类,运行的时候会出现下面的结果:

Animal:动物
Animal:可爱的动物
Cat:吃饭
Animal:动物在吃饭
Cat:可爱的小猫
Cat:猫喜欢吃鱼

实例就给你分享到这里了,更多java程序代码例子请继续来奇Q工具网了解吧。

推荐阅读:

在java中的this如何使用?实际代码详解

在java中如何生成webservice的接口?详细图文解析

在java中怎么用SOAP调用webservice,如何写它的接口?