温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java超类变量怎么用

发布时间:2026-09-20 12:23:14 来源:亿速云 阅读:92 作者:小樊 栏目:编程语言

在 Java 中,**“超类变量”**一般指的是:用父类(超类 / 基类)类型声明的变量,去引用子类对象。这是 Java 多态的核心用法。

下面从概念、用法、示例、注意事项几个方面说明。


一、什么是超类变量

父类 变量名 = new 子类();

例如:

Animal a = new Dog();
  • Animal 是超类
  • Dog 是子类
  • a 是超类变量

二、基本用法示例

1. 定义超类和子类

class Animal {
    void eat() {
        System.out.println("动物吃东西");
    }
}

class Dog extends Animal {
    void eat() {
        System.out.println("狗吃骨头");
    }

    void bark() {
        System.out.println("狗叫");
    }
}

2. 使用超类变量

public class Test {
    public static void main(String[] args) {
        Animal a = new Dog(); // 超类变量指向子类对象
        a.eat(); // 输出:狗吃骨头(多态)
    }
}

✅ 调用的是子类重写的方法


三、超类变量能做什么

✅ 1. 调用超类中存在的方法(包括被重写的)

a.eat(); // OK

❌ 2. 不能直接调用子类特有方法

a.bark(); // 编译错误

原因:
编译器只认 Animal 类型,不知道 bark() 存在。


四、如何调用子类特有方法(向下转型)

if (a instanceof Dog) {
    Dog d = (Dog) a;
    d.bark();
}

⚠️ 转型前最好用 instanceof 判断,避免 ClassCastException


五、超类变量的常见使用场景

1. 方法参数用超类

void feed(Animal a) {
    a.eat();
}

调用:

feed(new Dog());
feed(new Cat());

✅ 提高代码扩展性


2. 集合中使用超类

List<Animal> list = new ArrayList<>();
list.add(new Dog());
list.add(new Cat());

3. 工厂 / 接口返回

Animal getAnimal() {
    return new Dog();
}

六、注意事项总结

点 说明
编译看左边 编译器看变量声明类型
运行看右边 实际调用看对象类型
只能访问超类定义的成员 子类特有成员不可直接访问
多态依赖方法重写 静态方法不行

七、一句话总结

Java 超类变量 = 用父类类型接收子类对象,实现多态,提高扩展性,但不能直接调用子类独有方法。

如果你愿意,我也可以讲:

  • 超类 vs 接口变量
  • 抽象类变量怎么用
  • 和实际项目(Spring、Android)中的用法

你现在是初学 / 面试 / 项目实战哪种场景?

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手