【java】如何 获取 java抽象类定义的 所有实现类?

当前位置: >
> java中关于抽象类和接口的问题。1、若一个类的主类是抽象类,那么它必须实现主类中所有的抽象方法吗
java中关于抽象类和接口的问题。1、若一个类的主类是抽象类,那么它必须实现主类中所有的抽象方法吗
outengjie & at
java中关于抽象类和接口的问题。1、若一个类的主类是抽象类,那么它必须实现主类中所有的抽象方法吗?
2、某接口A包含N个方法,某类B实现该接口,实体类B需要实现接口的所有方法吗?
(是不是抽象方法和常量不同)
<div class='ansercon' id='content_&不一定,但是这个子类就必须是抽象类了。
2&基本一样。outside & &
& & (0)(0)引用这两问题你在eclipse里试一下就清楚了
如果实现类是实体类必须实现所有抽象方法。因为实体类不能包含抽象方法,有抽象方法的类必须是abstract的。
如果实现类是抽象类,就无所谓了。
同理如果是实体类继承抽象类,实体类也必须实现抽象类里的所有抽象方法。
接口里只能包含抽象方法,不能有实现方法。所以同上个问题,如果实现类是实体类,必须实现所有抽象方法,如果实现类是抽象类就可以部分实现抽象方法。outmysoul & &
& & (0)(0)引用
本问题标题:
本问题地址:
温馨提示:本问答中心的任何言论仅代表发言者个人的观点,与希赛网立场无关。请对您的言论负责,遵守中华人民共和国有关法律、法规。如果您的言论违反希赛网问答中心的规则,将会被删除。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&&&增值电信业务经营许可证湘B2-Java——抽象类实现接口 - JAVA技术学习 - ITeye技术网站
博客分类:
在Java中,使用抽象类来实现接口,并不是毫无作用。相反,有时间有很大的作用。
当你只想实现接口中的个别方法(不是所有方法)时,你可以先写一个抽象类来实现该接口,并实现除了你想要的方法之外的所有方法(方法体为空)。接着再用你的类继承这个抽象类,这个类中就只用实现你需要的方法了,这样就可以达到你的需要了。但是,如果你直接实现接口的话,你就需要实现接口的所有方法。
通过下面例子,可以很好的理解:
例:有一个接口Window,有三个方法,draw(),putColor(),setPosition()三个方法,程序员在设计页面时只关注对其进行位置定位(画图draw()和着色putColor()则由美工实现),所以他只需要实现setPosition()方法,而其余两个不用实现。则设计如下:
interface Window{
public void draw();
public void putColor();
public void setPosition();
*抽象类,不实现需要的方法。而实现的不需要的方法的方法体设为空,
abstract class DesignedPage implements Window{
public void draw(){}
public void putColor(){}
* 具体实现类,实现特定的方法,该类中只有需要的方法
public class DesingedPageA
extends DesignedPage{
public void setPosition(){
//set the window position
通常情况下,如果我们需要在具体实现类中实现draw()方法时,都是调用父类的draw()方法(super.draw())。
LZ想说啥?这个帖子比较久,今天才看见。呵呵对于1楼的发言,我想说的是,楼主表达的意思是:众所周知普通类如果实现一个接口,那么普通类需要重写接口中的所有方法但是抽象类实现借口,可以完全覆盖/重写 接口中的方法,也可只重写接口中的某几个方法子类再继承抽象类时,子类重写的方法即为抽象类中未重写接口中的方法。这只是一种设计方式而已。
浏览: 7118 次
来自: 贵阳
1927105 写道LZ想说啥?这个帖子比较久,今天才看见。呵 ...
LZ想说啥?
缺少包:jsr173_1.0_api.jarJava接口和抽象类的特殊实现方法--匿名类
(作者:mdjtwz& 日期:)
一、java中的接口本质上是加约束的抽象类
public abstract class AExample
public abstract int add(int x,int y);
public abstract int sub(int x,int y);&
public interface IExample
&public int add(int x,int y);
public int sub(int x,int y);&
通常的用法是创建一个新类,这个类实现接口或从抽象类派生。这个新类要实现接口中定义的全部方法,或实现抽象类中的全部抽象方法。
1、抽象类的实现方法:
public class MyClass extends AExample
//其它成员定义:略
//实现抽象类中的抽象方法
public int add(int x,int y)
&return x+y;
&public int sub(int x,int y)
&&&&&&&&&&
return x-y;
//其它部分:略
使用方法:
AExample ae = new MyClass();
int s = ae.add(4,2);
int t = ae.sub(4,2);
2、接口的实现方法:
public class MyClass implements IExample
//其它成员定义:略
//实现抽象类中的抽象方法
public int add(int x,int y)
return x+y;
&public int sub(int x,int y)
&return x-y;
//其它部分:略
使用方法:
IExample ae = new MyClass();
int s = ae.add(4,2);
int t = ae.sub(4,2);
可见,两者本质是一样的,使用方法也是非常相似的。
二、特殊实现方法
这里不使用上述从抽象类的派生新类和用接口实现的新类的方法。
&&1、先来看一下数组的初始化例子:
这样定义数组后,array仅仅是个引用,array[0],array[1]没有实现,即不存在。但是如果在定义时初始化为:
int[] array = new int[]{1,2};
1和2看成是数组的两个“成员实例”。这时array[0],array[1]就被实现了,也即array被实现了。
&&2、接口和抽象类都可以用类似的方法实现:
AExample ae = new AExample(){
&&&&public
int add(int x,int y)
&&&&&return
&&&&public
int sub(int x,int y)
&&&&&return
int s = ae.add(4,2);
int t = ae.sub(4,2);
这里的所谓“成员实例”就是具体的两个方法add和sub的实现。
IExample ae = new IExample(){
&&&&public
int add(int x,int y)
&&&&&return
&&&&public
int sub(int x,int y)
&&&&&return
int s = ae.add(4,2);
int t = ae.sub(4,2);
很神奇吧!实际上这就是java的匿名类!
&&&&&上面的形式是本人在初学java的事件处理编程时遇到一个疑问:为什么java的事件监听者注册时使用的形式是这样的:
//Person是本人设计的一个含有事件处理的类,PersonListener是个接口--监听者接口
Person& p = new Person("Tong",53);
/////////////////////////////////////////////////////////////////////////////////////////////////////////
//创建事件监听者接口的实例并注册
p.addPersonListener( new PersonListener(){
public void OnNameChanged(PersonEventObject e)
//自定义事件处理代码
&&&&&&&&&&
System.out.println("Name&&
:"+((Person)(e.getSource())).getName());
public void OnAgeChanged(PersonEventObject e)
&&&&&&&&&&
//自定义事件处理代码
&&System.out.println("Name&&
:"+((Person)(e.getSource())).getName());
//////////////////////////////////////////////////////////////////////////////////////////////////
将上述p.addPersonListener(...)分成两个步骤就一清二楚了:
PersonListener pl = new PersonListener(){
public void OnNameChanged(PersonEventObject e)
&//自定义事件处理代码
System.out.println("Name&&
:"+((Person)(e.getSource())).getName());
public void OnAgeChanged(PersonEventObject e)
&&&&&&&&&//自定义事件处理代码
System.out.println("Name&&
:"+((Person)(e.getSource())).getName());
p.addPersonListener(pl);
看一看,就是我们上面讨论的问题。
通过这个例子,希望许多初学java的人会有所得。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 java抽象类实现接口 的文章

 

随机推荐