You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java新手求教:如何重复使用同一实例变量名无需重命名?

解决Java中无需重命名重复使用实例变量的问题

这问题我刚学Java的时候也踩过坑!核心原因是你在同一个main方法的作用域里重复声明了同名变量drawObject,Java语法不允许在同一局部作用域内定义两个同名变量。要不用重命名就能复用这个变量名,有两种实用方案:


方案1:直接重新赋值(推荐,贴合多态设计)

第一次声明变量后,后续只需要给它赋值新的子类对象,不需要重复写Shape类型声明。这也是多态的典型用法——父类引用可以指向任意子类实例。

修改后的代码如下:

public class TestPolymorph { 
    public static void main(String[] args) { 
        // 首次声明并初始化Rectangle对象
        Shape drawObject = new Rectangle(40,60); 
        drawObject.draw(); 
        // 直接赋值新的Circle对象,无需重复声明类型
        drawObject = new Circle(40); 
        drawObject.draw(); 
    } 
}

方案2:用代码块隔离作用域

如果一定要保留两次变量声明的写法,可以把每次的变量放在独立的代码块{}里。每个代码块拥有自己的局部作用域,内部的变量名不会和其他代码块冲突:

public class TestPolymorph { 
    public static void main(String[] args) { 
        // 第一个独立代码块
        {
            Shape drawObject = new Rectangle(40,60); 
            drawObject.draw(); 
        }
        // 第二个独立代码块,变量名可重复
        {
            Shape drawObject = new Circle(40); 
            drawObject.draw(); 
        }
    } 
}

不过这种写法稍显冗余,一般更推荐方案1,既简洁又符合多态的设计初衷。

内容的提问来源于stack exchange,提问作者Euru

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 07:03:26