首页
学习
活动
专区
工具
TVP
发布

【Kotlin】接口抽象 ( 接口属性方法定义 | 接口默认方法实现 | 抽象 )

文章目录 一、接口属性方法定义 二、接口默认方法实现 三、抽象 一、接口属性方法定义 ---- Kotlin 中使用 interface 关键字 定义接口 , 接口中的 所有 属性 函数 默认都是...open 的 , 在 接口 实现中 , 必须 使用 override 重写 接口的 属性 函数 ; 重写 接口属性 主要是 为 该属性赋值 , 以及 设置成员属性的 getter setter...方法 ; 重写 接口函数 主要是 实现 抽象函数 ; 代码示例 : 在下面的代码中 , 使用 interface 关键字定义了 Person 接口 , 在其中定义了 两个 属性一个函数 , 这些成员...默认都使用 open 修饰 ; Student 是 Person 接口实现 , 在该类中需要 使用 override 重写 接口中所有的 成员属性 成员方法 ; interface Person...---- 在 Java 接口中 只能定义抽象方法 , 但是在 Kotlin 中 , 可以提供一个 默认的接口方法实现 ; 在 Kotlin 接口中 , 可以 为 接口属性 提供默认的 setter 实现

90020
您找到你想要的搜索结果了吗?
是的
没有找到

Kotlin 匿名实现接口抽象的区别详解

(holder: String, itemData: Any, position: Int) { println(holder + itemData + position) } }) 抽象:...他们之间唯一的区别就是调用时的下面这句,抽象多了一个括号。 object : OnBind object : AbstractOnBind() 就这么一点区别,其实本质上是完全不一样的。...在实现接口时,object 代替了 java 中 new 一个对象,在这里“:“ 号后紧跟接口接口没有构造方法,代表了object实现了这个接口; 而在实现抽象的时候,抽象方法后边有(),可以理解为调用了抽象方法的构造方法...总结一下:为便于理解可以这么想(实际原理可能并不是这样),接口时,先有 object ,然后让 object 实现接口;抽象时,先实现抽象中的抽象方法,用构造方法构造出一个对象后,再给到 object...以上这篇Kotlin 匿名实现接口抽象的区别详解就是小编分享给大家的全部内容了,希望能给大家一个参考。

1.9K30

Java 继承Thread实现Runnable接口的区别

通过实现Runnable接口,实例化Thread     在实际应用中,我们经常用到多线程,如车站的售票系统,车站的各个售票口相当于各个线程。...当我们做这个系统的时候可能会想到两种方式来实现,继承Thread实现Runnable接口,现在看一下这两种方式实现的两种结果。...二号窗口卖票---->2 二号窗口卖票---->1 一号窗口卖票---->4 一号窗口卖票---->3 一号窗口卖票---->2 一号窗口卖票---->1 那么我们接下来看看用runable接口实现是怎么的呢...用图表示如下 在我们刚接触的时候可能会迷糊继承Thread实现Runnable接口实现多线程,其实在接触后我们会发现这完全是两个不同的实现多线程,一个是多个线程分别完成自己的任务,一个是多个线程共同完成一个任务...其实在实现一个任务用多个线程来做也可以用继承Thread实现只是比较麻烦,一般我们用实现Runnable接口实现,简洁明了。

1.5K70

抽象接口

抽象接口 特点 抽象不能被实例化 但可以创建一个引用变量,其类型是一个抽象,指向非抽象的子类实例 抽象与抽象方法的使用 抽象中可以没有抽象方法,但包含了抽象方法的必须被定义为抽象 如果子类没有实现的所有抽象方法...{    public void foo();    //其他方法 } 特性 接口不可以被实例化 实现必须实现接口的所有方法 实现可以实现多个接口 implements、多个接口使用逗号隔开...的 接口没有构造方法,不能被实例化 一个接口不能实现另一个接口,但可以继承多个其他接口 一个必须实现接口抽象方法(implements),除非这个也是抽象 抽象vs接口 相同点 代表系统的抽象层...都不能被实例化 都能包含抽象方法 用于描述系统提供的服务,不必提供具体实现 不同点 在抽象中可以为部分方法提供默认实现,而接口中只能包含抽象方法 抽象便于复用,接口便于代码维护 一个只能继承一个直接的父...,但可以实现多个接口 使用原则 接口做系统与外界交互的窗口 接口提供服务 接口本身一旦制定,就不允许随意修改 抽象可完成部分功能实现,还有部分功能可作为系统的扩展点 面向对象设计原则 多用组合,少用继承

19930

转向Kotlin——接口

Kotlin与Java类似,使用interface声明接口,一个可以实现多个接口实现的方法继承相同,而且,接口中的属性方法都是open的。...return "js" } } class MyClass : MyInterface { override fun func() { } } 上述代码中可以看出:实现接口与继承父类似...,使用冒号(:),但后面不是调用构造方法,而是是指跟接口名;Kotlin中的接口的方法,允许包含默认方法体,对于这样的额方法,子类实现接口时不一定必须实现该方法。...抽象 抽象接口非常相似,抽象不能被实例化,需要abstract关键字声明,抽象实现接口后,接口中没有函数体的函数可以不重写,接口中的这些方法自动被继承到子类中,称为抽象方法: abstract...小结 Kotlin中的e接口与Java中的本质上没有什么两样,只不过Kotlin为了体现差异,加入了一些语法糖,如接口允许函数带函数体,支持属性,不支持静态方法等。我们需要慢慢去熟悉它。

88130

抽象接口

抽象只能用来继承。 抽象方法必须被子类实现。 为什么需要接口 接口就是比“抽象”还“抽象”的“抽象”,可以更加规范的对子类进行约束。全面地专业地实现了:规范具体实现的分离。...抽象还提供某些具体实现接口不提供任何实现接口中所有方法都是抽象方法。接口是完全面向规范的,规定了一批具有的公共方法规范。 从接口实现者角度看,接口定义了可以向外部提供的服务。...接口名:名采用相同命名机制 extends:接口可以多继承 常量:接口中的属性只能是常量,总是:public static final 修饰。不写也是。...一个实现接口,必须实现接口中所有的方法,并且这些方法只能是public的。 4. 接口中只能包含静态常量、抽象方法,不能有普通属性、构造方法、普通方法。 5....接口完全支持多继承。的继承类似,子接口扩展某个父接口,将会获得父接口中所定义的一切。 总结普通:只有具体实现抽象:具体实现规范(抽象方法) 都有!接口:只有规范!

97550

TypeScript-接口

实现接口只要实现的某一个接口, 那么就必须实现接口中所有的属性方法错误示例:图片interface PersonInterface { name: string; say(): void...BNTang'; say(): void { console.log(`我的名字叫:${this.name}`); }}let p = new Person();p.say();接口继承定义一个...(`name = ${this.name}, age = ${this.age}`); }}只要一个接口继承了某个, 那么就会继承这个中所有的属性方法但是只会继承属性方法的 声明, 不会继承属性方法的...{this.name}, age = ${this.age}, gender = ${this.gender}`); }}let stu = new Student();stu.say();如果接口继承的中包含了...protected 的属性方法, 那么就只有这个的 子类 才能实现这个接口包含 protected 属性的情况错误示例:图片class Person { protected name: string

17820

【Kotlin】Kotlin 抽象接口 ( 接口声明 | 接口实现 | 抽象声明与实现 )

Kotlin 接口定义与实现 II . Kotlin 抽象定义 III . Kotlin 继承抽象实现接口 IV . Kotlin 接口与抽象子类测试 I ....Kotlin 接口实现 : /** * 如果类实现一个接口 , 那么必须全部实现接口中的方法 * 抽象实现一个接口 , 可以不实现接口中的方法 */ class MaleStudent : IStudent...Kotlin 继承抽象实现接口 : /** * 接口 : 表现事物的能力 , 只能有方法 * 抽象 : 表现事物的本质 , 可以有成员抽象方法 * * 该类继承抽象 , 实现接口...测试 接口 + 抽象 : HumanStudent 继承了抽象 , 实现接口 ; // 测试 接口 + 抽象 //HumanStudent 继承了 Human 抽象 , 实现了 Student...Kotlin 接口与抽象子类测试 ---- 1 . 接口 : 表现事物的能力 , 只能有方法 2 . 抽象 : 表现事物的本质 , 可以有成员抽象方法 // 3 .

47420

、抽象接口的区别

如果你不实现吃这个方法的话猫人都会死掉,这是不行的。这个时候我们就可以用接口来强制实现这个方法。 3.jdk8接口可以定义staticdefault方法。...public abstract class 名{ //可以定义中所有的属性方法 //还可以定义接口中的常量抽象方法 } 抽象相当于融合了接口,并且它不要求继承者必须实现它的所有方法。...抽象接口的对比 接口描述的是行为 抽象描述的是根源;  接口是对动作的抽象,抽象是对根源的抽象。 接口抽象都不可以被实例化。...多继承 抽象方法可以继承一个实现多个接口 接口只可以继承一个或多个其它接口 速度 它比接口速度要快 接口是稍微有点慢的,因为它需要时间去寻找在实现的方法。...什么时候使用抽象接口 如果你拥有一些方法并且想让它们中的一些有默认实现,那么使用抽象吧。 如果你想实现多重继承,那么你必须使用接口。 如果基本功能在不断改变,那么就需要使用抽象

42710

java:基于ProxyInvocationHandler实现接口的decorator pattern

并在此基础上实现一些新特性,但对外表现上,代理与被代理的行为功能是一样的。设计一个的代理,很简单,就是通过转发实现被代理的所有方法,但如果要经常写这样的代理,是件挺烦人的事儿。...如果被代理的是一个接口,那么完全可以基于ProxyInvocationHandler实现一个基本通用的接口代理,在特定应用场景下可以省去手工写代码的工作。...如下是一个基于ProxyInvocationHandler实现的一个接口代理,它只是简单的转发方法请求到被代理的接口实例,实际使用时可以继承该类根据需要重写invoke方法来添加新的行为特性. package...* * @param 接口类型 * @param 接口实现类型 */ public class InterfaceDecorator implements InvocationHandler...* @param delegate 实现接口 */ public InterfaceDecorator(Class interfaceClass, T delegate) {

54410

浅析JDBC常用的接口——JDBC的Driver接口、DriverManager、Connection接口

二、Driver接口 1.在JDBC中,每个驱动程序一般会提供一个实现Dirver接口。当你在加载某一个Driver,它自己实例化并向DriverManager注册这个实例。...五、Connection接口 1.Connection接口是用于特定的数据库进行连接,在连接上下文中执行SQL语句并且返回结果。...七、总结 1.本文介绍了JDBC的Driver接口、DriverManager、Connection接口。...2.介绍了Driver接口,当你在加载某一个Driver,它自己实例化并向DriverManager注册这个实例。...4.介绍了Connection接口,它是用于特定的数据库进行连接,在连接上下文中执行SQL语句并且返回结果。 5.希望大家通过本文的学习,对你有所帮助!

1.5K40

第4章 接口

本系列: 第三章 第4章 接口 接口是Java程序设计语言的核心,它们也是Java语言的基本抽象单元。...初学Java的时候感觉接口都好简单,后续慢慢发现接口的设计并非是想象总的那么简单的,还有好多需要学习。...如:String、基本类型的包装、BigIntegerBigDecimal 不可变类比可变更加易于设计、实现使用。它们不容易出错,且更加安全。...第18条 接口优于抽象 Java提供两种机制用来定义允许多个实现的类型:接口抽象。...区别 接口抽象的区别有很多,其中 最为明显 的区别是: 抽象可以包含某些方法的实现,而接口不允许,即接口都是抽象方法 而另外还有一个 更重要 的区别是:为了实现由抽象定义的类型,必须成为抽象的一个子类

51030

07 接口抽象

接口的作用在于规定一些功能框架,具体功能的实现则通过该接口约束的完成。...与一样,接口也可以使用 instanceof 关键字,用来判断一个对象是否实现了某接口接口实现 定义了一套行为规范,一个实现这个接口就是要遵守接口的定义规范,要实现接口中定义的所有方法....一个可以实现多个接口接口间用逗号分隔; 如果实现接口不是抽象,则在的定义部分必须实现指定接口的所有抽象方法;否则编译时会指示该类只能为抽象是不能创建对象的....抽象声明实现 在Java中抽象抽象方法的修饰符是 abstract,注意抽象方法中只有方法的声明,没有方法的实现。...抽象接口是配合而非替代关系,它们经常一起使用,接口声明能力,抽象提供默认实现实现全部或部分方法,一个接口经常有一个对应的抽象

27410

区分接口抽象

2 抽象方法必须存在于抽象中。 3 抽象中可以有一般的变量一般的方法。 4 子类继承抽象必须实现其中抽象方法,除非子类为抽象。...接口抽象的区别 1 接口只能包含抽象方法,抽象可以包含普通方法。 2 接口只能定义静态常量属性,抽象既可以定义普通属性,也可以定义静态常量属性。...我认为,抽象接口的区别在于使用动机。使用抽象是为了代码的复用,而使用接口的动机是为了实现多态性。所以,如果你在为某个地方该使用接口还是抽象而犹豫不决时,那么可以想想你的动机是什么。...但是,如果我们程序中的WomenMan两个基本没有共同代码,而且有一个PersonHandle需要实例化他们,并且不希望知道他们是男是女,而只需把他们当作人看待,并实现多态,那么定义成接口就有必要了...再者,我认为接口抽象的另一个区别在于,抽象和它的子类之间应该是一般特殊的关系,而接口仅仅是它的子类应该实现的一组规则。 (转自脚本之家)

43030

JavaSE抽象接口

JavaSE抽象接口 一、抽象 1、抽象概念 一个中没有包含足够的信息来描绘一个具体的对象,这样的就是抽象 在Java中,一个如果被 abstract 修饰称为抽象,抽象中被 abstract...,父是抽象就会在实例化的时候提示错误 二、接口 1、接口概念 在Java中,接口可以看成是:多个的公共规范,是一种引用数据类型 接口的本质就是一种抽象出来的公共方法,Java不能进行多继承,但是可以多实现接口...接口使用,必须要有一个"实现"来"实现"该接口: public class 名称 implements 接口名称{ // ... } 案例: // USB接口 public interface USB...xxx 特性 在Java中,之间是单继承的,一个只能有一个父,即Java中不支持多继承,但是一个可以实现多个接口 案例: class Duck extends Animal implements...抽象中可以包含普通方法普通字段, 这样的普通方法字段可以被子类直接使用(不必重写), 而接口中不能包含普通方法, 子类必须重写所有的抽象方法 注意:上面说的接口是java8之前的情况下才是正确的

23020
领券