extends和implements

问题描述

JAVA中为什么会有extends和implements两个关键字

解决方案

解决方案二:
不想让别人乱用怕把程序搞混乱了...
解决方案三:
一个是继承,一个是实现,一个用在类之间或者接口之间来继承,一个用在类和接口之间
解决方案四:
这就是人家的习惯形成了规定啊,进而就成了标准了啊,为了通用就要符合标准啊,如果是你创立的java语言,你完全可以别的
解决方案五:
2个不同的Java封装数据传递方式
解决方案六:
因为那个写jdk的人写了两个单词
解决方案七:

解决方案八:
该回复于2010-12-09 17:03:31被版主删除
解决方案九:
建议去看看抽象类和接口的区别。其实代码写多了,这些问题也就不会问了。
解决方案十:
这么比方吧,你只能有一个爸爸,但是你可以有很多继父
解决方案十一:
因为无聊呗
解决方案十二:
不同的含义撒
解决方案十三:
java不支持多继承,但可以通过实现多个接口来变相达到多继承的效果这个两个东西存在的意义也是不一样的继承封装和多态,应该了解一下
解决方案十四:
extends是子类继承父类,implements是实现接口
解决方案十五:
一个是继承,一个是接口实现
解决方案:
引用13楼leehomwong的回复:

extends是子类继承父类,implements是实现接口

继承和实现
解决方案:
jdk里面很多类有父类,同时有对应的接口,实现功能一样
解决方案:
引用5楼fkyq01的回复:

因为那个写jdk的人写了两个单词

呵呵
解决方案:
java他爸规定的
解决方案:
引用18楼ticmy的回复:

java他爸规定的

哈哈……
解决方案:
extends和implements两个关键字是为了更好表达类、接口与类、接口之间的父子关系。子--父类--类extends类--接口implements接口-类N/A接口-接口extends
解决方案:
呵呵,搞笑贴
解决方案:
extends表示继承,可以继承类也可以继承接口。implements表示实现接口。一个类只能继承一个,即单继承。但可以实现多个。
解决方案:
哎,我也不懂为什么啊。
解决方案:
引用2楼yan465942872的回复:

一个是继承,一个是实现,一个用在类之间或者接口之间来继承,一个用在类和接口之间

不错继承只能继承一种,实现能实现多个。两种互相补充才能更好的实现多重继承。extends用来描述"isa"的关系implements用来描述"likea"的关系
解决方案:
extendsjava中继承的意思,是为了让子类继承父类的一些属性和方法,便于程序的功能扩充和代码复用;implementsjava中是实现接口的意思,是为了弥补java类不能直接实现多继承的缺陷,实现程序运行时的多态(多态:一般是根据传入的参数的类型决定执行哪个类或子类的方法)
解决方案:
因为他们java设计者觉得extends太短,发帖不符合"贴名一定要长定律"所以设计出个implements
解决方案:
引用9楼ssbzaft的回复:

这么比方吧,你只能有一个爸爸,但是你可以有很多继父

+1好精辟。。。
解决方案:
C#都用:感觉不好,都没区别了
解决方案:
当你写很多类,并且都有公共部分时,你就发现extends跟implements的妙用了……
解决方案:
一个是接口的实现,一个是继承。接口可以被实现,也可以被继承,但一个类只能继承。一个类可以实现多个接口,但只能继承一个类。
解决方案:
赞同2楼说法~
解决方案:
extends-继承可以不用做什么,直接用父类方法等。就像富二代直接拿父亲的东西用。implements-实现需要自己去实现方法才能去用。就像我这样的平头老百姓,自己的目标,需要自己努力去实现。
解决方案:
哈哈,楼上这个比喻打得太有意思啦
解决方案:
一个是接口一个是继承。。
解决方案:
继承和实现
解决方案:
这算啥问题啊···主要是他们的功能···用哪个单词做关键字,这个取决于开发这门语言的人
解决方案:
接口与抽象类区别与联系1、组成:抽象类:抽象方法、普通方法、常量、变量、构造方法、全局常量,所以说抽象类只比普通类多了一个抽象方法;接口:抽象方法和全局常量;此处需要注意:抽象类的抽象方法必须加入abstract关键字进行修饰,而接口不需要,因为接口总默认的方法都是抽象的,默认的常量都是全局常量;2、定义:抽象类:abstract;接口:interface;3、子类:子类通过extends继承抽象类;子类通过implements实现接口;4、限制:一个子类只能继承一个抽象类;但一个子类可以同时实现都个接口5、关系:一个抽象类可以实现多个接口,但是一个接口不能继承一个抽象类只能实现多个接口;一个抽象类可以包含多个接口,一个接口中可以包含多个抽象类;6、设计模式:抽象类;模版设计接口:工厂设计、代理设计两个在一起操作可以完成适配器设计7、实例化:都是通过对象的多态性,通过子类进行对象的实例化操作;8、实现限制:抽象类:存在单继承的局限性;接口:不存在此局限性;9、特性:接口:表示一个标准、一种能力;接口(inteface):接口被用来建立类与类之间关联的标准;抽象类(abstractclass):只要类中有抽象方法,此类就被称为抽象类,而我认为,抽象类除了被继承之外,没有任何意义;所以,综上所述:如果接口和抽象类可以同时使用的话,则优先选择接口,这样可以通过接口避免了单继承的局限性;适配器设计模式:将两个不兼容的类纠结在一起使用,属于结构型模式,需要有Adaptee(被适配者)和Adaptor(适配器)两个身份,例如如果我们将两个没有关系的类组合在一起使用,此时我们可以修改各自类的接口,但是如果我们没有接口的源码,或者说,我们不愿意为了一个应用程序来修改各自的接口,这时我们就可以使用实现Adapter方式(使用Adapter,在这两个接口之间创建一个混合接口):范例:假设我们现在要打桩,有两种类:方形桩和圆形桩;方形桩:publicclassSquarePeg{  publicvoidinsert(Stringstr){    System.out.println("SquarePeginsert():"+str);  }}圆形桩:publicclassRoundPeg{  publicvoidinsertIntohole(Stringmsg){    System.out.println("RoundPeginsertIntoHole():"+msg);}}Now,有一个应用,需要既要打印圆形桩又要打印方形桩,那么我们需要将这两个没有关系的类综合应用.假设RoundPeg我们没有源代码,或源代码我们不想修改,那么我们使用Adapter来实现这个应用:publicclassPegAdapterextendsSquarePeg{  privateRoundPegroundPeg;  publicPegAdapter(RoundPegpeg)(this.roundPeg=peg;)  publicvoidinsert(Stringstr){roundPeg.insertIntoHole(str);}}在上面代码中,RoundPeg属于Adaptee,是被适配者.PegAdapter是Adapter,将Adaptee(被适配者RoundPeg)和Target(目标SquarePeg)进行适配.实际上这是将组合方法(composition)和继承(inheritance)方法综合运用.PegAdapter首先继承SquarePeg,然后使用new的组合生成对象方式,生成RoundPeg的对象roundPeg,再重载父类insert()方法。从这里,你也了解使用new生成对象和使用extends继承生成对象的不同(new生成的是一个新的一模一样的对象,extends继承了属性生成的对象可以对属性进行修改),前者无需对原来的类修改,甚至无需要知道其内部结构和源代码.如果你有些Java使用的经验,已经发现,这种模式经常使用。进一步使用上面的PegAdapter是继承了SquarePeg,如果我们需要两边继承,即继承SquarePeg又继承RoundPeg,因为Java中不允许多继承,但是我们可以实现(implements)两个接口(interface)publicinterfaceIRoundPeg{  publicvoidinsertIntoHole(Stringmsg);}publicinterfaceISquarePeg{  publicvoidinsert(Stringstr);}下面是新的RoundPeg和SquarePeg,除了实现接口这一区别,和上面的没什么区别。publicclassSquarePegimplementsISquarePeg{  publicvoidinsert(Stringstr){    System.out.println("SquarePeginsert():"+str);  }}publicclassRoundPegimplementsIRoundPeg{  publicvoidinsertIntohole(Stringmsg){    System.out.println("RoundPeginsertIntoHole():"+msg);  }}下面是新的PegAdapter,叫做two-wayadapter:publicclassPegAdapterimplementsIRoundPeg,ISquarePeg{  privateRoundPegroundPeg;  privateSquarePegsquarePeg;  //构造方法  publicPegAdapter(RoundPegpeg){this.roundPeg=peg;}  //构造方法  publicPegAdapter(SquarePegpeg)(this.squarePeg=peg;)  publicvoidinsert(Stringstr){roundPeg.insertIntoHole(str);}}还有一种叫PluggableAdapters,可以动态的获取几个adapters中一个。使用Reflection技术,可以动态的发现类中的Public方法。代理设计模式:接口:publicinterfaceIGive{publicvoidgiveMoney();}代理:packageorg.lxh.proxydesignmodedemo;publicclassProxyGiveimplementsIGive{privateIGivegive=null;publicProxyGive(IGivegive){//讨债对象this.give=give;}publicvoidbefore(){System.out.println("准备:刀、绳子、枪、斧子、、、、、");}publicvoidgiveMoney(){this.before();this.give.giveMoney();this.after();}publicvoidafter(){System.out.println("销毁所有证据!!!!!!!!");}}真正的实体:packageorg.lxh.proxydesignmodedemo;publicclassRealGiveimplementsIGive{publicvoidgiveMoney(){System.out.println("把钱还给我!!!!");}}测试:packageorg.lxh.proxydesignmodedemo;publicclassProxyDesignDemo{publicstaticvoidmain(Stringargs[]){IGivegive=newProxyGive(newRealGive());give.giveMoney();}}工厂设计模式:接口:packageorg.lxh.factorydesignmodedemo;publicinterfaceIFruit{publicvoideat();}实体1:packageorg.lxh.factorydesignmodedemo;publicclassOrangeimplementsIFruit{publicvoideat(){System.out.println("吃橘子!!!!!");}}实体2:packageorg.lxh.factorydesignmodedemo;publicclassAppleimplementsIFruit{publicvoideat(){System.out.println("吃苹果!!!!!");}}工厂:packageorg.lxh.factorydesignmodedemo;publicclassFactory{publicstaticIFruitgetFruit(StringclassName){IFruitf=null;if("Apple".equals(className)){f=newApple();}if("Orange".equals(className)){f=newOrange();}returnf;}}测试:packageorg.lxh.factorydesignmodedemo;publicclassFactoryDesignDemo{publicstaticvoidmain(Stringargs[]){IFruitf=Factory.getFruit("Apple");if(f!=null)f.eat();else{System.out.println("没有任何有效的东西可吃的!!!!!!!!");}}}接口是公开的(public)里面不能有私有的方法和变量,是让别人使用的,实现接口的类一定要实现接口里定义的所有方法,而对于抽象类,里面可以有私有方法或私有变量,实现抽象类的类可以有选择的重写需要用到的方法,但是必须实现里面所有的抽象方法;

时间: 2024-07-31 22:05:09

extends和implements的相关文章

java启动线程时 extends与implements的一个差异

java extends与implements在使用时的一个差异: Implements: public class ThreadImplementsTest implements Runnable{ public void loop(){ String name=Thread.currentThread().getName(); System.out.println(name+"====>进入loop()"); for (int i = 0; i < 10; i++) {

java中extends与implements的区别浅谈_java

1. 在类的声明中,通过关键字extends来创建一个类的子类.一个类通过关键字implements声明自己使用一个或者多个接口.extends 是继承某个类, 继承之后可以使用父类的方法, 也可以重写父类的方法; implements 是实现多个接口, 接口的方法一般为空的, 必须重写才能使用2.extends是继承父类,只要那个类不是声明为final或者那个类定义为abstract的就能继承,JAVA中不支持多重继承,但是可以用接口 来实现,这样就要用到implements,继承只能继承一个

在SurfaceView extends Surface中定义了class,在里面重载onkeyup,就是执行不了

问题描述 在SurfaceView extends Surface中定义了class,在里面重载onkeyup,就是执行不了 代码如下: package com.rzy.plane; import java.util.Random; import java.util.Vector; import android.app.Activity; import android.content.Context; import android.content.res.Resources; import an

PHP面向对象开发之类中接口的应用(interface、implements)

类中接口的应用 1.关键字:interface 2.关键字:implements 1.接口的介绍与创建 接口:一种成员属性全部为抽象或常量的特殊抽象类. 规则: 1.类中全部为抽象方法. 2.抽象方法钱不用加abstract. 3.接口抽象方法属性为public. 4.成员属性必须为常量. 格式:  代码如下 复制代码 interface demo { const NAME = "常量对象属性"; function fun1(); function fun2(); //抽象方法. }

JAVA之旅(七)——final关键字 , 抽象类abstract,模板方法模式,接口interface,implements,特点,扩展

JAVA之旅(七)--final关键字 , 抽象类abstract,模板方法模式,接口interface,implements,特点,扩展 OK,我们继续学习JAVA,美滋滋的 一.final 我们来聊聊final这个关键字 final可以修饰类,方法和变量 final修饰的类不可以被继承 final修饰的方法不可以被覆盖 final修饰的变量是一个常量,只能被赋值一次 内部类只能访问被final修饰的局部变量 final,故名思意,就是最终的意思,由以上的五种特性,不过final的出现,也是有

frame-求救。为什么键盘监听事件不响应了。。

问题描述 求救.为什么键盘监听事件不响应了.. mport java.awt.CardLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.Graphics; import java.awt.Image; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; impor

JSP与XML的结合

js|xml 综述:可扩展标注语言(eXtensible Markup Language,XML)正被迅速的运用于业界,它已作为与平台.语言和协议无关的格式描述和交换数据的广泛应用标准.XML和它的辅助规范可用于描述数据的文档表现,描述XML文档类型的限制,描述XML文档和资源之间的链接,描述XML文档的自动转换和格式化. 如何开发自定义标签库? 我使用JSP和ASP编程已经有一段颇长的时间了,在两种服务器端的编程方式中,我越来越觉得JSP的功能要强大得多.不提别的,其中JSP的标签库就是我选择

手机卫士03-下载app并安装

原文再续书接上一回,昨天我们把那个与服务器端的交互以及解析xml的内容给搭建出来啦,那么今天我们就来完成一下下载新版的apk并安装的逻辑写一下 既然要下载apk,那么肯定是另开一个线程下载的啦,所以我们在这里就新建一个类啦 com.xiaobin.security.engine.DownloadTask <font color="#333333"><font face="Arial">package com.xiaobin.security.

悠然乱弹:“最好的模板引擎”Beetl 剖析及与Tiny模板引擎对比

Beetl的环境搭建 输入命令 ? 1 git clone https://git.oschina.net/xiandafu/beetl2.0.git 不一会儿,输出了下面的内容 ? 1 2 3 4 5 6 7 Cloning into 'beetl2.0'... remote: Counting objects: 5807, done. remote: Compressing objects: 100% (2145/2145), done. remote: Total 5807 (delta