java类中增加了新方法,该方法掉用了另外一个类中没有的方法,在不执行该方法的情况下,执行会不会报错
2014-11-07 10:11
225 查看
看到标题,很多朋友会很纳闷,这么初级的问题,还用讨论吗?eclipse里面编译不通过呀。。。其实,里面另有玄机...
答案是执行不会报错。
现在写下我的复原过程,供大家参考。
总共A、B和Main三个类,A中注入B类,两类中各有print1和print2方法,A的print1调用B的print1,print2调用B的print2,Main只调用A的print1方法。然后整体编译,编译后的class放到新文件夹中,此时执行Main,输出print1的结果。然后只删除B类中的print2方法,将编译好的B类替换原来的B类,执行Main,输出print1的结果。结果不报异常。我把代码贴出来,方便大家理解(类反编译后的代码)。
类A:
public class A
{
private B b;
public B getB()
{
return this.b;
}
public void setB(B b)
{
this.b = b;
}
public void print1() {
this.b.print1();
}
public void print2() {
this.b.print2();
}
}
类B:
import java.io.PrintStream;
public class B
{
public void print1()
{
System.out.println(1);
}
}
类Main:
public class Main
{
public static void main(String[] args)
{
A a = new A();
B b = new B();
a.setB(b);
a.print1();
}
}
答案是执行不会报错。
现在写下我的复原过程,供大家参考。
总共A、B和Main三个类,A中注入B类,两类中各有print1和print2方法,A的print1调用B的print1,print2调用B的print2,Main只调用A的print1方法。然后整体编译,编译后的class放到新文件夹中,此时执行Main,输出print1的结果。然后只删除B类中的print2方法,将编译好的B类替换原来的B类,执行Main,输出print1的结果。结果不报异常。我把代码贴出来,方便大家理解(类反编译后的代码)。
类A:
public class A
{
private B b;
public B getB()
{
return this.b;
}
public void setB(B b)
{
this.b = b;
}
public void print1() {
this.b.print1();
}
public void print2() {
this.b.print2();
}
}
类B:
import java.io.PrintStream;
public class B
{
public void print1()
{
System.out.println(1);
}
}
类Main:
public class Main
{
public static void main(String[] args)
{
A a = new A();
B b = new B();
a.setB(b);
a.print1();
}
}
相关文章推荐
- Java实例说明 100个线程同时向一个银行账户中存入1元钱,在没有使用同步机制和使用同步机制情况下的执行情况
- Java中 每个类在没有声明构造方法的前提下,会自动生成一个不带参数的构造方法
- 一个没有main方法的java Hello World
- 【Java】try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
- Java中的static关键字解析(转自海子)__为什么main方法必须是static的,因为程序在执行main方法的时候没有创建任何对象,因此只有通过类名来访问。
- java -cp的用法 可以使用这个命令执行类中的main, 在没有minfest的情况下
- Java中 每个类在没有声明构造方法的前提下,会自动生成一个不带参数的构造方法
- java中怎么判断一个字符串在另外一个字符串中的方法
- android getView方法不执行的一个原因是布局文件中没有给列表显示的位置
- java程序:一个排序好的数组,增加一个数插入到合适的位置保存到另外个数组,输出
- JAVA调用系统命令或可执行程序--返回一个Runtime运行时对象,然后启动另外一个进程来执行命令
- java创建一个子类对象是会调用父类的构造方法会不会创建父类
- 在主函数main()之后再执行另外一个函数的方法
- java中执行子类的构造方法时,会不会先执行父类的构造方法
- java 编写一个没有main方法的程序
- Java异常处理中,try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
- Java异常处理中,try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
- 使用java写一个没有main方法的“Hello World”程序(摘自java核心技术.卷I)
- Java基础-重写-子类重写父类中的方法后执行情况
- 在java语言中为什么有时候构造方法有时要构造一个没有参数的方法