永发信息网

在JAVA中如果一个类实现一个接口,那么可以将此接口看做该类的父类吗?

答案:5  悬赏:70  手机版
解决时间 2021-03-03 21:24
如果该类同时继承了一个类,那么此时用接口的引用是否可以调用到该类父类的方法呢?
最好是给个能够运行的例子,比如说:...
最佳答案
可以,为什么不可以嘛,你再强制转换一下,为什么不可以了?

interface A {
public void interfaceMethod();
}
class B {
public void classMethod() {
System.out.println("I am the class method");
}
}
class C extends B implements A {

public void interfaceMethod() {
System.out.println("CCCCC");
}
}

public class D{


public static void main(String[] args) {
A a = new C();
C c = (C)a;
c.classMethod();
}
}
全部回答
不能说成调用父类的,只能说实现!!!
这是多态的一种应用: 把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化。 赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。也就是说,父亲的行为像儿子,而不是儿子的行为像父亲。 举个例子:从一个基类中派生,响应一个虚命令,产生不同的结果。 比如从某个基类继承出多个对象,其基类有一个虚方法tdoit,然后其子类也有这个方法,但行为不同,然后这些子对象中的任何一个可以赋给其基类的对象,这样其基类的对象就可以执行不同的操作了。实际上你是在通过其基类来访问其子对象的,你要做的就是一个赋值操作。 使用继承性的结果就是可以创建一个类的家族,在认识这个类的家族时,就是把导出类的对象当作基类的对象,这种认识又叫作upcasting。这样认识的重要性在于:我们可以只针对基类写出一段程序,但它可以适应于这个类的家族,因为编译器会自动就找出合适的对象来执行操作。这种现象又称为多态性。而实现多态性的手段又叫称动态绑定(dynamic binding)。 简单的说,建立一个父类的对象,它的内容可以是这个父类的,也可以是它的子类的,当子类拥有和父类同样的函数,当使用这个对象调用这个函数的时候,定义这个对象的类(也就是父类)里的同名函数将被调用,当在父类里的这个函数前加virtual关键字,那么子类的同名函数将被调用。 例子 在c++中: class a { public: a() {} virtual void foo() { cout << "this is a." << endl; } }; class b : public a { public: b() {} void foo() { cout << "this is b." << endl; } }; int main(int argc, char* argv[]) { a *a = new b(); a->foo(); if(a != null) delete a; return 0; } 这将显示: this is b. 如果把virtual去掉,将显示: this is a. 前面的多态实现使用抽象类,并定义了虚方法. 在java中: 多态,是面向对象的程序设计语言最核心的特征。多态,意味着一个对象有着多重特征,可以在特定的情况下,表现不同的状态,从而对应着不同的属性和方法。从程序设计的角度而言,多态可以这样来实现(以java语言为例): public interface parent { public void simplecall(); } public class child_a implements parent{ public void simplecall(){ //具体的实现细节; } } public class child_b implements parent{ public void simplecall(){ //具体的实现细节; } } //当然还可以有其他的实现 然后,我们就可以看到多态所展示的特性了: parent pa = new child_a(); pa.simplecall()则显然是调用child_a的方法; parent pa = new child_b(); pa.simplecall()则是在调用child_b的方法。所以,我们对于抽象的父类或者接口给出了我们的具体实现后,pa 可以完全不用管实现的细节,只访问我们定义的方法,就可以了。事实上,这就是多态所起的作用,可以实现控制反转这在大量的j2ee轻量级框架中被用到,比如spring的依赖注射机制。
public interface A { public void interfaceMethod(); } public class B { public void classMethod() { System.out.println("I am the class method"); } } public class C extends B implements A { public static void main(String[] args) { A ins = new C(); ins.classMethod(); } } 你说的应该是这个意思吧?这样的代码是无法通过编译的。因为ins是A的一个引用,它虽然是C的实例,但是被向上转型为A了。那么编译器在ins上所能看到的,就只有A相关的方法,看不到B相关的方法(虽然它在堆上确实有这个方法)。如果有不明白的,继续问吧。呵呵
不能!绝对不能!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
应用本科与专科的区别
简阳有啥好吃的,除了羊肉汤
今天买了双鞋子的 是什么谷中秀品牌的 想问下
甘肃电大开放英语(4)作业
保定到徐水多长时间
【运动手表怎么用】运动手表最外边那一圈从60
香港顺丰快递单号是多少位数的?
宽带36.56mb是多少兆
逊克县特种设备检验所这个地址在什么地方,我
求单机游戏空中霸王(貌似是这么叫的吧……Ai
日本煎茶、玉露、番茶、烘焙的特点及区别?
好发于儿童的癣是A.白癣、手癣B.黄癣、白癣C.
如果原告以个人独资企业的投资人个人作为被告
客来兴商店地址在哪,我要去那里办事
交通银行卡可以在别的银行的ATM机可以存钱取
推荐资讯
以下关于城市设计的说法,哪个是最恰当的?[
郑一面庄这个地址在什么地方,我要处理点事
在淘宝买笔记本电脑可靠吗
请帮助翻译下句,句中take credit for如何理解
想了解下柔光脱毛是永久脱毛吗?痛不痛
小酒窝烧烤庄园我想知道这个在什么地方
我桌面的图标都变扁了
嘉禾县国土局广发国土所地址在哪,我要去那里
深圳银盛电子支付科技有限公司安徽分公司在哪
找淘宝达人要多少钱
求师徒恋温馨的小说或者是江湖温馨的小说
名店行在什么地方啊,我要过去处理事情
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?