黑马程序员技术交流社区
标题:
静态方法
[打印本页]
作者:
孟茹
时间:
2014-3-4 12:10
标题:
静态方法
这个里面那个get方法为什么可以那样调用?
为什么get方法可以那样.jpg
(111.66 KB, 下载次数: 3)
下载附件
2014-3-4 12:08 上传
作者:
hauntedlove
时间:
2014-3-4 12:29
用static修饰的是静态方法,静态方法的调用方式是类名.方法名。由于get()方法处在Demo类的内部,所以,调用时就不用再写Demo.get()了。
作者:
漠然~回首℃
时间:
2014-3-4 23:54
静态方法可以类名.方法名直接调用啊!所以能Demo.get();
作者:
赵卓辉
时间:
2014-3-5 00:58
这是哪里来的题目啊,你编译会出错。接口中没有test()这个方法,编译通不过。你可以做以下修改,即可运行,打印结果为“yes”
package test019.zzh.bean;
interface A{
String test();
}
class B implements A{
public String test(){
return "yes";
}
}
public class Demo {
static A get(){
return new B();
}
public static void main(String args[]){
A a=get();
System.out.println(a.test());
}
}
复制代码
作者:
杯之水
时间:
2014-3-5 07:00
用Static修饰的方法为静态方法,可以通过类名.方法名来调用get()方法,又因为该方法的返回值类型为接口A,返回值为new B(),所以A a=new B() 即进行向上转型。
作者:
云行水边
时间:
2014-3-5 09:47
静态方法可以直接调用,例如Frame.add()方法,又由于get()方法在内部,所以可以直接调用
作者:
sanguodouble1
时间:
2014-3-5 10:12
1.因为main()方法和get()方法是属于Demo类的,而且都是静态的(也就是在虚拟机加载的时候就已经存在于内存的方法区code segment中了),所以可以不必实例化demo,在main()中直接调用
2.因为get()方法的返回值是B类型,也就是接口A的实现类
所以A a = get();其实就是父类引用指向子类对象
3.这样就满足多态的三个条件:继承、重写、父类引用指向之类对象
所以a.test()其实就是调用B.test()
也就是最后输出"yes"
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2