建议你下在一本think in java的中文版看看,讲得很清楚“接口”(Interface)规定了可对一个特定的对象发出哪些请求。然而,必须在某个地方存在着一些代码,以便满足这些请求。这些代码与那些隐藏起来的数据便叫作“隐藏的实现”。站在程式化程序编写(Procedural Programming)的角度,整个问题并不显得复杂。一种类型含有与每种可能的请求关联起来的函数。一旦向对象发出一个特定的请求,就会调用那个函数。我们通常将这个过程总结为向对象“发送一条消息”(提出一个请求)。对象的职责就是决定如何对这条消息作出反应(执行相应的代码)。
对于任何关系,重要一点是让牵连到的所有成员都遵守相同的规则。创建一个库时,相当于同客户程序员建立了一种关系。对方也是程序员,但他们的目标是组合出一个特定的应用(程序),或者用您的库构建一个更大的库。
若任何人都能使用一个类的所有成员,那么客户程序员可对那个类做任何事情,没有办法强制他们遵守任何约束。即便非常不愿客户程序员直接操作类内包含的一些成员,但倘若未进行访问控制,就没有办法阻止这一情况的发生——所有东西都会暴露无遗。有两方面的原因促使我们控制对成员的访问。第一个原因是防止程序员接触他们不该接触的东西——通常是内部数据类型的设计思想。若只是为了解决特定的问题,用户只需操作接口即可,毋需明白这些信息。我们向用户提供的实际是一种服务,因为他们很容易就可看出哪些对自己非常重要,以及哪些可忽略不计。
对于任何关系,重要一点是让牵连到的所有成员都遵守相同的规则。创建一个库时,相当于同客户程序员建立了一种关系。对方也是程序员,但他们的目标是组合出一个特定的应用(程序),或者用您的库构建一个更大的库。
若任何人都能使用一个类的所有成员,那么客户程序员可对那个类做任何事情,没有办法强制他们遵守任何约束。即便非常不愿客户程序员直接操作类内包含的一些成员,但倘若未进行访问控制,就没有办法阻止这一情况的发生——所有东西都会暴露无遗。有两方面的原因促使我们控制对成员的访问。第一个原因是防止程序员接触他们不该接触的东西——通常是内部数据类型的设计思想。若只是为了解决特定的问题,用户只需操作接口即可,毋需明白这些信息。我们向用户提供的实际是一种服务,因为他们很容易就可看出哪些对自己非常重要,以及哪些可忽略不计。
解决方案 »
- 三次样条差值
- Thread.currentThread().getContextClassLoader().loadClass有什么用?
- J2SE 中 如何实现 控件的重叠。(教教菜鸟吧。)
- 一个关于wait的选择题
- 碰到代码包冲突问题如何解决?
- 问一个关于概念的问题?
- <jsp:setProperty name="PageHeaderInfo" property="*" />是给所有的属性设值,那具体的每个属性得到的值是多少?
- 关于连续访问数据库,这个问题怎么有时好有时出错?
- Iterator接口有什么用?
- 线程的优先级以及休眠问题
- 又是中文乱码问题,JAVABEAN+MYSQL,高分!!!
- jtable单元格问题,散分
最好通过访问类的实例变量
就是这样
Youclass a = new Youclass;
然后就可以通过这种方法访问Youclass中的public数据了
a.你的public数据和方法
void fun();
}interface 和里面的fun自动为public
//又实现了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();
}
}