建议你下在一本think in java的中文版看看,讲得很清楚“接口”(Interface)规定了可对一个特定的对象发出哪些请求。然而,必须在某个地方存在着一些代码,以便满足这些请求。这些代码与那些隐藏起来的数据便叫作“隐藏的实现”。站在程式化程序编写(Procedural Programming)的角度,整个问题并不显得复杂。一种类型含有与每种可能的请求关联起来的函数。一旦向对象发出一个特定的请求,就会调用那个函数。我们通常将这个过程总结为向对象“发送一条消息”(提出一个请求)。对象的职责就是决定如何对这条消息作出反应(执行相应的代码)。
对于任何关系,重要一点是让牵连到的所有成员都遵守相同的规则。创建一个库时,相当于同客户程序员建立了一种关系。对方也是程序员,但他们的目标是组合出一个特定的应用(程序),或者用您的库构建一个更大的库。
若任何人都能使用一个类的所有成员,那么客户程序员可对那个类做任何事情,没有办法强制他们遵守任何约束。即便非常不愿客户程序员直接操作类内包含的一些成员,但倘若未进行访问控制,就没有办法阻止这一情况的发生——所有东西都会暴露无遗。有两方面的原因促使我们控制对成员的访问。第一个原因是防止程序员接触他们不该接触的东西——通常是内部数据类型的设计思想。若只是为了解决特定的问题,用户只需操作接口即可,毋需明白这些信息。我们向用户提供的实际是一种服务,因为他们很容易就可看出哪些对自己非常重要,以及哪些可忽略不计。

解决方案 »

  1.   

    你要是初学者的话最好先不要用借口和继承
    最好通过访问类的实例变量
    就是这样
    Youclass a = new Youclass;
    然后就可以通过这种方法访问Youclass中的public数据了
    a.你的public数据和方法
      

  2.   

    interface Jiekou{
       void fun();
    }interface 和里面的fun自动为public
      

  3.   

    //抽象类和接口的综合实例//定义了SuperAbstract、SubAbstract两个抽象类和一个接口AsSuper,其中SubAbstract继承了SuperAbstract,
    //又实现了AsSuper,之后,又定义了一个类p109,他又继承了类SubAbstract,可以
    //看到在类中,抽象地实现了接口中的两个方法x()和y(),因为SubAbstract是一个抽象类,
    //而在p109中,才真正实现了这两个方法,
    //而SubAbstract中定义的方法b(),就没有实现。abstract class SuperAbstract{
    void a(){
    System.out.println("defined a() in SuperAbstract.");
    }
    abstract void b();
    abstract int c(int i);
    }
    interface AsSuper{
    void x();
    void y();
    }abstract class SubAbstract extends SuperAbstract implements AsSuper{
    public void b(){
    System.out.println("in SubAbstract,implements b() from SuperAbstract");
    }
    abstract String f();
    abstract void g();
    }public class p109 extends SubAbstract{
    public void x(){
    System.out.println("in mainclass ,must implement x() from interface!");
    }
    public void y(){
    System.out.println("in mainclass ,must implement y() from interface!");
    }
    public int c(int i){
    System.out.println(i+"in mainclass, implement c() from SuperAbstract.");
    return i;
    }
    public String f(){
    return"in mianclass ,implementd f() from SubAbstract.";
    }
    public void g(){
    System.out.println("in mainclass ,implementd g() from SubAbstract.");
    }
    public static void main(String args[]){
    p109 instance=new p109();
    instance.x();
    instance.y(); instance.a();
    instance.b();
    instance.c(100); System.out.println(instance.f());
    instance.g();
    }
    }