创建对象后仍无法调用其他类方法的Java技术问题求助
问题原因分析与解决方案
核心原因:Java类体的语法规则限制
Java的类结构中,类的顶级作用域(即类体中除方法、代码块之外的区域)仅允许定义成员(成员变量、方法、内部类、枚举等),不能直接放置可执行语句。你写的bn.print();是一条方法调用的执行语句,不属于成员定义范畴,因此编译器会直接报错。
允许放置执行语句的合法区域
要执行方法调用这类语句,必须把它放在以下几个合法区域内:
- 方法内部(包括构造方法、普通成员方法、静态方法)
- 实例代码块:用
{}直接包裹在类体中,每次创建类的实例时自动执行 - 静态代码块:用
static {}包裹,类加载时执行一次
修正后的代码示例
比如把调用放到构造方法里:
class bin{ public void print(){ System.out.println("You typed print."); } } class process{ bin bn = new bin(); // 构造方法中调用 process() { bn.print(); } }
或者放到实例代码块里:
class process{ bin bn = new bin(); // 实例代码块中调用 { bn.print(); } }
关于继承的误区
继承和你遇到的问题没有直接关联,不管是否继承,只要违反了类体的语法规则,都会报错。继承只是实现代码复用、多态的手段,和能否调用方法的语法合法性无关——只要你拥有类的实例,在合法的作用域内就能调用它的公共方法。
内容的提问来源于stack exchange,提问作者maulik
相关产品推荐
相关产品推荐

