第一种会报错,如果注释掉了,第三种会打印,最后会生成3个class文件.
最后一个就是接口的静态变量,可以打印作者: 陈俊来 时间: 2012-10-13 10:56
interface Inter
{
public static final NUM=3;
public abstract void show();
}
class Test implements Inter
{
public void show(){}
}
class InterDemo
{
public static void main(String[] args)
{
Test t = new Test()//这里木有;
System.out.println(t.NUM);
System.out.println(Test.NUM);
System.out.println(Inter.NUM);//请问 这三种 打印 都对吗 生成几个class文件 为什么 解释下最后一个
}
}
现在3种打印都会报错,漏洞爆出哦,一个都不会生成class文件
public static final NUM=3;这一个NUM居然没有类型
要是改成 public static final int NUM=3; 这样,第三种打印还可以打印。 作者: 梁俊 时间: 2012-10-13 11:12
封号必须有啊作者: 杨志男 时间: 2012-10-13 12:07
陈俊来 发表于 2012-10-13 10:56
interface Inter
{
public static final NUM=3;
貌似加了数据类型也打印不出来作者: 王乐 时间: 2012-10-13 13:18
interface Inter
{
public static final NUM=3;
public abstract void show();
}
class Test implements Inter
{
public void show(){}
}
class InterDemo
{
public static void main(String[] args)
{
Test t = new Test()
System.out.println(t.NUM);
System.out.println(Test.NUM);
System.out.println(Inter.NUM);//请问 这三种 打印 都对吗 生成几个class文件 为什么 解释下最后一个
}
}
第一种 是对象 调用 没错作者: 陈家明 时间: 2012-10-13 20:36
修改后: public static final int num=3;
生成3个class文件,interface也是生成class文件,num为静态,接口名可以调用成员,所以可以Inner.num. 作者: 梁世喜 时间: 2012-10-14 00:44
代码改错之后,三种打印都能输出结果。
在接口中的常量都有public static final 进行修饰,这样的变量通常当做全局变量时候,所以一般都采用接口(类)名.调用。
接口是特殊的抽象类。所以必定会生成三个class文件。作者: 谭立文 时间: 2012-10-14 10:22
package com.wenfengkeji.heima;
interface Inter
{
public static final int NUM=3;
public abstract void show();
}
class Test implements Inter
{
public void show(){}
}
class Demo19
{
public static void main(String[] args)
{
Test t = new Test();
System.out.println(t.NUM); //都能够正常打印啊 System.out.println(Test.NUM);
System.out.println(Inter.NUM);//请问 这三种 打印 都对吗 生成几个class文件 为什么 解释下最后一个
System.out.println(Inter.class);
System.out.println(Test.class);
System.out.println(Test.class == t.getClass()); 一共两份class 没算主函数所在Demo19类,若算所有被加载的那lang包里的多了去了
}
}