黑马程序员技术交流社区

标题: 接口中的成员都是public访问类型的,为什么interface前面没有修饰呢? [打印本页]

作者: 我能驾驭住    时间: 2012-5-20 11:39
标题: 接口中的成员都是public访问类型的,为什么interface前面没有修饰呢?
电脑运行主板,电脑运行基于主板,主板上有很多接品,网卡 声卡 PCI插槽等;

interface Pci//pci接口
{
public void open();
public void close();
}
class  MainBoard//主板类
{
public void run()
{
System.out.println("mainboard run")
}
public void usepci(Pci p)
{
if(p!=null)
  {
     p.open
  p.close
  }
}
}
class NetCard implements Pci//网卡,继承Pci插槽
{
public void open()
{
System.out.println("netcard open")
}
public void close()
{
System.out.println("netcard close")
}
}
class SoundCard implements Pci//网卡,继承Pci插槽
{
public void open()
{
System.out.println("soundcard open")
}
public void close()
{
System.out.println("soundcard close")
}
}
class DongtaiDemo//动态 主函数
{
public static void main(String[] args)
{
  MainBoard mb= new MainBoard();
  mb.run();
  mb.usepci(null);
     mb.usepci(new NetCard());  
  mb.usepci(new SetCard());
}
}



作者: 蒋映辉    时间: 2012-5-20 11:47
interface的规定跟类的规定一样的   一个.java文件里可以有几个类和接口,但是只有跟java文件同名的那个才能加public
作者: 李哲    时间: 2012-5-20 11:47
abstract,public 都可以修饰接口,或者没有修饰符。

作者: 袁錦泰    时间: 2012-5-20 11:55
本帖最后由 袁錦泰 于 2012-5-20 12:35 编辑

声明接口:
[public] interface 接口名 [extends 父接口名列表(用,分隔)]

常量声明:
[public] [static] [final] 域类型 域名 = 常量值;

抽象方法声明:
[public] [abstract] [native] 返回值 方法名(参数列表) [throw 异常];
权限修饰符不写不带面没有(注意:我说的是权限修饰符),可以被protected修饰,但只能在所在包中进行调用;也可以被public修饰.
作者: 余宏    时间: 2012-5-20 12:24
interface是可以有访问权限的,不写只能在package内访问
作者: 李保成    时间: 2012-5-20 13:37
呵呵,java的接口有一个默认权限就是是public static final。而接口中的方法的默认权限都是:public abstract.
作者: 黑马任雪刚    时间: 2012-5-20 14:30
一个Java文件可以有多个类或者是接口,但是其中只能有一个类被public修饰,称为主类。(这是规定)
一个完整的java程序中可以没有主类。
java程序的名字必须与主类的名字相同,main()方法一般放在用public修饰的类中(但是main()方法不是必须放在主类中)。
而对于楼主说的:接口中的成员都是public访问类型的。目的只是为了扩大成员变量的访问权限。
而interface前面可以有public修饰,也可以没有。
作者: 山水游客    时间: 2012-5-20 15:34
引自《java编程思想》
在java中,申明借口的语法如下:
[public] interface 接口名 [extends 父接口名列表]
{
//常量声明
[public] [static] [final] 域类型 域名 = 常量值;

//抽象方法声明:
[public] [abstract] [native] 返回值 方法名(参数列表) [throw 异常列表];
}
可以在interface关键字前面添加public,如果不添加public,则它只具有包访问权限,这样它就只能在同一个包中可用,借口也可以包含域,但是这些域隐式 的是static和final的。
可以选择在接口中显式地将方法申明为public,但是即使你不这么做,他们也是public,因此当要实现一个接口时,在接口中被 定义的方法必须定义为public,否则他们只能的到默认的包访问权限,这样在方法被继承的过程中,其可访问权限就被降低了,这是java编译器所不允许的。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2