实现接口用多态(多态是为了接口重用)

网友投稿 303 2023-01-17


本篇文章给大家谈谈实现接口用多态,以及多态是为了接口重用对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 今天给各位分享实现接口用多态的知识,其中也会对多态是为了接口重用进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

【Golang】对使用接口实现多态的理解

看【Go语言实战】这本书第二遍实现接口用多态实现接口用多态,看第一遍实现接口用多态的时候只是留下个印象实现接口用多态,为了加深记忆以及方便回顾,把自己的理解写出来,仅供参考,Go Go Go,开始

接口是用来定义行为的类型。这些被定义的行为不由接口直接实现,而是通过方法由用户 定义的类型实现。如果用户定义的类型实现了某个接口类型声明的一组方法,那么这个用户定 义的类型的值就可以赋给这个接口类型的值。这个赋值会把用户定义的类型的值存入接口类型 的值。

1、如果参数类型是指针,那么在调用的时候也必须传递指针地址,因为编译器不是总能自动获取一个值的地址
2、如果参数类型是值,那调用的时候传值或者指针都可以,因为通过指针可以获取到对应的值

1、定义一个接口,接口中定义一个方法,所有想要实现该接口的类型,必须先实现接口中的方法
2、定义一个类型,并为该类型以接收者方式实现【步骤1】中的接口方法
3、声明一个多态方法,接收的参数类型为【步骤1】中定义的接口类型
4、调用该多态方法,并把【步骤2】中定义的类型作为参数传递给【步骤3】中声明的多态方法,由多态方法来调用接口方法

java作业,利用接口实现多态

代码如下:

interface Shape {
float perimeter();
}
class Sequare implements Shape {
private float a;

public Sequare(float a) {
super();
this.a = a;
}
@Override
public float perimeter() {
return 4 * a;
}
}
class Rou implements Shape {

private float r;
public Rou(float r) {
this.r = r;
}
@Override
public float perimeter() {
return 2 * 3.14f * r;
}
}
public class MainClass {
public static float getPerimeter(Shape s) {
return s.perimeter();
}

public static void main(String[] args) {

Sequare s = new Sequare(20);
System.out.println("Square周长:" + getPerimeter(s));

Rou r = new Rou(15.5f);
System.out.println("Rou周长:" + getPerimeter(r));
}
}

运行结果:

java怎么用接口实现多态啊 急求

public boolean graduate(CanObtainCredit coc){
if(coc.obtainCredit()) return true;
else return false;
}
这就是多态了。
多态实际上就是接口的不同实现。

实现多态的方式

实现多态有三种方式:虚方法,抽象方法,接口。

 虚方法:子类重写父类中的方法,对父类中的方法进行覆盖。适用情况:父类中的方法对子类来说不适用,子类通过重写该方法,覆盖了父类中的方法。

public class Person
{

public virtual void SayHello()

{

Console.WriteLine("Say hello!");

}

}

public  class Chinese : Person

{

public override void SayHello()

{

Console.WriteLine("中国人问好!");

}

}

抽象方法:子类重写父类中的方法,父类中不对方法进行实现,在子类中进行实现,父类是抽象类。适用情况:针对同一种类型抽象出来的父类,对某些行为和属性大家都是公有的,但是这些属性和行为实现方式并不一致。

abstract  class Person
{

public abstract void SayHello();

}

class Chinese : Person

{

public override void SayHello()

{

Console.WriteLine("中国人问好!");

}

}

接口:实现接口的类,将接口中的方法实现。适用情况:A.当多个类型不能抽象出合理的父类时,但是又要对某些行为进行多态,将公共的方法抽象到一个接口中,让不同的子类调用。

public interface IFlyable//定义一个接口,实用interface 修饰,接口名以I开头,接口中只能包括方法,且方法没有访问修饰符,方法不实现。

{

void Fly();

void Jump();

}

class Student:Person,IFlyable//当一个类继承了父类,并且实现了多个接口的时候,被继承的类必须写在继承列表的第一个位置

{

public void Fly()

{

Console.WriteLine("I can fly");

}

}

在Java程序设计中,接口(Interface)怎样实现、继承和使用多态?

接口用implements实现,实现了接口就必须实现接口中的方法。如下面的例子:public interface A{public void test();接口中的方法不能有实现,也就是就不能有大括号}//记得,接口可以多重实现,之间用逗号分开!public class B implements A{public void test(){System.out.println("这是实现了接口A中的test方法,如果不实现就会报错的!");}public static void main(String[] args){B b = new B();b.text();}}如果你想用多态,看不面:上面的B b = new B();改写成:A a = new B(); 这就是多态的表现了 继承:接口可以继承接口,如果一个接口继承了另一个接口,就会继承另一个接口中的所有方法,你要实现这个接口,就必须实现它中的所有方法,包括继承而来的方法!

Java中接口、接口的实现和多态的问题?

没错,这就是多态。接口实现实现接口用多态的多态,意味着接口UserService负责定义方法的名字,形参列表和返回值,而不考虑其具体实现,调用方UserBlh也不必实现接口用多态了解findUser,saveOrUpdate这两方法由谁来实现,只需知道这userService指针指向的对象已经实现实现接口用多态了这两个方法,那么调用方UserBlh只管调用就好。


“调用的是接口UserService中对应的方法,还是调用的是接口的实现UserServiceImpl中对应的方法”看来你可能不太清楚在实现层(语言编译的技术)上如何做的。

具体来说,1.方法实际上就是一段可执行的代码。而接口UserService其实就是定义了一个数据结构(其实就是虚函数表),而不定义方法本身(就是接口没有定义可执行的代码块)

2.接口UserService的子类UserServiceImpl在构造函数里要往这个表填一些东西,这个东西就是子类UserServiceImpl所定义的可执行代码块的入口地址。

3.当调用方UserBlh调用findUser方法,则通过查虚函数表的方式找到那个findUser方法的地址,进行调用。

给张图帮助说明从技术的角度如何实现多态。(假设还有一个类B也实现了接口UserService)

关于实现接口用多态和多态是为了接口重用的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。 实现接口用多态的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于多态是为了接口重用、实现接口用多态的信息别忘了在本站进行查找喔。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:RabbitMQ消息中间件示例详解
下一篇:Java使用ffmpeg和mencoder实现视频转码
相关文章

 发表评论

暂时没有评论,来抢沙发吧~