一个JAVA的封装问题

yxlovemoney 2007-11-27 11:42:32
类B:
public interface B {
public void methodD();
}
------------------------------------
类A:
public abstract class A implements B{
abstract void methodA();
abstract void methodB();
abstract void methodC();
public void methodD(){
methodC();
methodB();
methodA();
}
}
--------------------------------------
类D:
public class D extends A {

void methodA() {
// TODO Auto-generated method stub
System.out.println("方法A");
}

void methodB() {
// TODO Auto-generated method stub
System.out.println("方法B");
}

void methodC() {
// TODO Auto-generated method stub
System.out.println("方法C");
}

}
----------------------------------------
类C:
public class C{
public B methodE(){
B c=new D();
return c;
}
}
这个类到底怎么理解呢?
-------------------------------------
public class Test {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
C d=new C();
B c=d.methodE();
c.methodD();
}

}

上面类C里的: B c=new D(); 这到底怎么回事呢?不是父类与子类之间才可以这样的吗?现在这样是什么意思呢?
...全文
68 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2007-11-27
  • 打赏
  • 举报
回复
接口可以理解成全抽象的抽象类
实现接口可以理解为继承全抽象的抽象类

那么实现类就是接口的子类,实现类的实例可以赋值给用接口定义的变量
rypgood 2007-11-27
  • 打赏
  • 举报
回复
你看
A实现了B,D继承与A
也就是D继承的是B的一个实现类
我们看一个层次关系关系
B b=new A();
这样可以吧??这样就表示A的层次小于或者等于(这里是小于)B,能理解吧?
A a=new D();
这样可以不??这样就表示D的层次小于或者等于(这里是小于)A,能理解不?
那么,其层次关系就是D小于等于(这里是小于)A小于等于(这里是小于)B,所以
B c=new D()可以不可以呢??
seaforce 2007-11-27
  • 打赏
  • 举报
回复
B c=new D();
因为B 是接口,而A实现了接口B,并且D继承了A,也就是说D继承了一个实现类。
你可以这么理解。
bukebuhao 2007-11-27
  • 打赏
  • 举报
回复
首先你明白了B c=new D(); 了,B是D的父类,对吧,父类的对象(无论父类是接口还是抽象类,虽然它本身不可以生成对象但)可以引用子类的对象你知道吗,子类的对象不可以引用父类的对象;
这是典型的向上转型,推荐你看看,Thinking in java 3,搞明白什么可以引用什么,什么是向上转型,这就很简单了!

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧