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
相关产品推荐
相关产品推荐

