Kotlin中国 为您找到相关结果 102

【android学习】AlertDialog对话框

1,方法 1)show 用于创建并显示对话框。 show()源码: public AlertDialog show() { AlertDialog dialog = create(); dialog.show(); return dialog; } create()方法可以创建对话框,但不显示。 2)setPositiveButton setPositiveButton方法用来加确定按钮。 3)setNegativeButton setNegativeButton方法用来加取消按钮。 4)Builder 因为其构造器都是保护的,所以不允许非子类调用。 故AlertDialog不能直接用new关键字构建对象,而必须使用其内部类Builder。 2,自定义Builder弹出对话框 1)含有标题、...阅读全文

博文 2017-12-13 15:01:34 SunshineTan

Kotlin学习(十一): 泛型(Generics)

Interoperable 泛型,即“参数化类型”,顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。 接下来学习Kotlin中的泛型,Kotlin的泛型为类型安全提供保证,相比与Java更安全。 泛型 在Java中经常会用到泛型: class Box{ private T var ; } // 使用 Box box = new Box(); 与Java一样,Kotlin中也用到了泛型: class Box(t: T) { var value = t } // 使用 val box: Box = Box(1) 与Ja...阅读全文

博文 2017-05-31 17:02:47 叫我旺仔

KotLin--类和继承

这篇文章,主要介绍kotlin中如何创建类,以及类的继承等等。在介绍这个类之前。不得不介绍一下kotlin中的超类了,我们都知道java中的超类是Object,那么kotlin中的超类是什么?其实是Any,看到这个单词我们也能联想到就是任何的意思。应该就是超类。但是这个超类, 它除了 equals()、hashCode()和toString()外没有任何成员。这也跟Object有些不同。 介绍完超类后,我们开始介绍普通类。kotlin中的类关键字 也是 class ,所有的类如果不指明超类的话,那么它默认的超类就是Any。 类的创建 class people{ } 那么kotlin 中的类的构造如何使用呢?在kotlin 中类可以有一个主构造和多个次构造。主构造跟在类名后。构造的关键字为co...阅读全文

博文 2017-07-18 16:03:50 我小时候真的可狠了

Java & Groovy & Scala & Kotlin - 22.包与访问权限

Overview 本章主要介绍各语言中的包和访问权限控制。 Java 篇 包 创建包 Java 使用关键字 package 来声明一个包。 包名中使用 . 作为路径分隔符,且包路径必须与源文件路径相同。 包只能声明在源文件开头。 例: package a.b; class B {} 导入包 Java 使用关键字 import 导入包。 可以使用通配符 *,导入一个包下的所有类。 如果一个类中都是静态成员的话,可以使用静态导入 static import 导入该类的所有静态成员,这样使用时就不用指定类名了。 导入语句只能声明在源文件开头,包声明之后。 导入指定的类 import a.b.B; 导入指定包下的所有类 import a.b.*; 静态导入 static import a.b.B.*...阅读全文

博文 2017-09-24 13:03:42 bookislife

kotlin与Spring, 默认类,方法,property为final带来的问题--依赖注入失效,NullPointerException异常

问题的由来 在Spring中使用kotlin, 发现依赖注入似乎没有生效,导致NPE. 比如以下的代码,对于发送短信这个功能, 并不需要在主流程中同步发送, 所以就使用了Spring的@Async注解, 可以使这个方法在配置AsyncExecutor中执行. 但是实际调用时, 却发现contactDao为null, 程序报NullPointerException异常. 但是我用java写却没有问题. @Service open class MessageService { //根据用户id获取用户联系信息的Dao @Autowired lateinit var contactDao: ContactDao //将message发给一系列的用户ids @Async fun sendMessag...阅读全文

博文 2017-05-23 11:42:50 haoyifen

从零开始的Kotlin之类和对象(一)

从零开始系列: 从零开始的Kotlin之类和对象(一) 从零开始的Kotlin之类和对象(二) 构造器 主构造器 Koltin 中的类可以有一个 主构造器,以及一个或多个 次构造器,主构造器是类头部的一部分,位于类名称之后 class Person constructor(firstName: String) {} 如果主构造器没有任何注解,也没有任何可见度修饰符,那么constructor关键字可以省略。主构造器中不能包含任何代码,初始化代码可以放在 初始化代码段中,初始化代码段使用 init关键字作为前缀。 class Person constructor(firstName: String) { init { System.out.print("FirstName is $firstN...阅读全文

博文 2017-05-23 12:00:12 居合子

Android中使用RecyclerView + SnapHelper实现类似ViewPager效果

Google 在 Android 24.2.0 的support 包中添加了SnapHelper,SnapHelper是对RecyclerView的拓展,结合RecyclerView使用,能很方便的做出一些炫酷的效果。SnapHelper到底有什么功能呢?SnapHelper旨在支持RecyclerView的对齐方式,也就是通过计算对齐RecyclerView中TargetView 的指定点或者容器中的任何像素点。,可能有点不好理解,看了后文的效果和原理分析就好理解了。看一下文档介绍: SnapHealper 介绍.png SnapHelper继承自RecyclerView.OnFlingListener,并实现了它的抽象方法onFling, 支持SnapHelper的RecyclerVie...阅读全文

博文 2018-03-30 18:02:37 街角的小丑

Android开发,Kotlin的了解与学习(六)-----类与继承

前几章已经把kotlin最基本的语法、数据结构等说清楚了,接下来这两章主要讲解kotlin中关于类和接口的相关知识 类 类这个东西使用和java比较类似,最简单的如下 class innerClass { }再class之前可以加private protected internal 或者public,默认不写就是public了 另外需要注意的是,如果类的内部没有实体,可以直接这么写 class innerClass不加括号 构造方法 提到类,肯定还会提到他的构造方法 kotlin中的构造方法和java有很大的不同,kotlin的构造方法分为两种:主构造方法、次构造方法 1.主构造方法: class InnerClass constructor(name: String) { }是的,kotl...阅读全文

博文 2017-06-24 05:01:02 Stanny_Bing

Kotlin智能类型转换

fun main(args: Array) { // 定义一个 Student 类型的 person val person : Person = Student() // 如果 person 属于 Student 类 if (person is Student){ // person 智能转换成 Student类 print(person.getName()) } val per : Person = Person() val stu : Student ?= per as Student // per强转成Student 失败返回null } // 定义一个父类 open class Person(){ } // 定义一个子类 class Student : Person(...阅读全文

博文 2017-07-13 18:03:45 Puck的双刀

我的Kotlin 学习之路(五)Kotlin之密封类及let、run、apply、also、with

这一节用个小例子来理解下密封类及let、run、apply、also、with之间的区别 Java有枚举,Kotlin也有枚举,但多了一个密封类,密封类就是子类有限的类 /** * 密封类 */ sealed class Language{ class Java : Language(){ fun println(){ println("${javaClass.name}") } } class Kotlin : Language(){ fun println(){ println("${javaClass.name}") } } class Python : Language(){ fun println(){ println("${javaClass.name}") } } class ...阅读全文

博文 2017-06-15 10:02:43 活着工作室

Kotlin 笔记 接口

kotlin的接口类似于Java 8中的接口,可以定义抽象函数,函数也可以有默认实现。它和抽象类的不同是接口不能存储状态。接口可以有属性,但是属性必须是抽象的或者提供访问方法的实现(要么没有实现,要么你自己提供实现,编译器不会帮你提供属性访问方法的实现)。 定义接口 interface MyInterface { fun bar() fun foo() { // optional body } } 实现接口 class Child : MyInterface { override fun bar() { // body } } 如果我们同时继承了两个接口,如果同名函数没有默认实现,或者有两个以上默认实现,子类需要显式overide函数,如果只有一个默认实现,则不需要显式overide int...阅读全文

博文 2017-05-27 15:26:30 yangweigbh

我的Kotlin 学习之路(七)Kotlin之泛型、泛型约束、协变(Variance)

一、泛型及泛型约束 kotlin中的泛型,和java中思维大体是相同的,但又有些区别 class Data(val t:T)//泛型类 fun play(i:Int){ //泛型方法 println(i) } interface onclick{ //泛型接口 fun click(t:T) } val data = Data("hello")//类实现 val p = play(1) //方法实现 class Data(val t:T):onclick{ //接口实现 override fun click(t: T) { println(t) } } //泛型约束 <占位符:类型> fun play(vararg...阅读全文

博文 2017-07-05 17:03:53 活着工作室

【Kotlin学习日记】Day15:泛型

大家好,我是William李梓峰,欢迎加入我的Kotlin学习之旅。今天是我学习 Kotlin 的第十五天,内容是 Generics - 泛型。 本篇内容众多,翻译不当之处,请多多包含,看中文理解不了就看代码,代码理解不了就看英文,看英文理解不了就自己动手打开 IDEA 练练手。就譬如什么是查克拉原理我不懂,但我会耍螺旋丸。 官方文档: https://kotlinlang.org/docs/reference/generics.html Generics - 泛型 As in Java, classes in Kotlin may have type parameters:Java抄袭了 C++ 的模板类并改了个名字叫泛型,同样,在 Kotlin 里边也有泛型: class Box(...阅读全文

博文 2017-07-13 01:03:49 William李梓峰

Kotlin学习笔记(二十六)接口与抽象类的区别

/** * 接口与抽象类的区别: * 1.抽象类可以为属性设置值和getter、setter,而接口不可以 * 2.抽象类和接口中都可以有默认的实现方法,但接口中的方法不能有状态, * 即涉及到属性的值需要到实现类中设置 * 3.子类只能继承一个父类,但可以实现多个接口 */ abstract class A { //抽象类 var i = 0 //抽象类的属性可以有值 // fun hello() { //普通的方法默认为final方法,不能被子类重写 // println(i) // } open fun bye() { //添加open关键字的方法可被子类重写 println("Bye Bye") } abstract fun say() //抽象方法一定要被子类重写 } interf...阅读全文

Kotlin学习02

上一篇中最后中提到的一个问题Java中的数组 和 Kotlin中的Array究竟差别在哪,这篇将会给大家介绍 任务 变型 协变,逆变,不变变型variance Java Kotlin 包括很多程序设计语言的类型系统都是支持子类型的,例如,Cat是Animal的子类型,那么Cat类型的表达式可用于出现在Animal类型表达式的地方 //java Animal中有个public属性name public static void needAnimalParameter(Animal animal) { System.out.println(animal.name); } public static void main(String[] args) { needAnimalParameter(new...阅读全文

博文 2017-05-27 15:12:48 咸鱼佬

kotlin中的高级特性--协变与逆变(反变)

逆变性与协变性是kotlin中相对于java的新特性,这个成为不少java转kotlin学习的一个坎,在这篇文章里我将详细介绍和推导逆变性与协变性的由来。 内容参考了以下两篇博客:http://www.cnblogs.com/lemontea/archive/2013/02/17/2915065.htmlhttp://www.cnblogs.com/Ninputer/archive/2008/11/22/generic_covariant.html 在此之前我们需要明白一个大前提: java不允许向下转型(父类转换成子类) 定义 假设有这样两个类型:TSub是TParent的子类,显然TSub型引用是可以安全转换为TParent型引用的。如果一个泛型接口IFoo,IFoo可...阅读全文

博文 2017-07-18 17:03:51 白_开_水

Android应用组件之服务(Service)---创建启动服务1

启动服务由另一个组件通过调用 startService() 启动,这会导致调用服务的 onStartCommand() 方法。 服务启动之后,其生命周期即独立于启动它的组件,并且可以在后台无限期地运行,即使启动服务的组件已被销毁也不受影响。 因此,服务应通过调用 stopSelf() 结束工作来自行停止运行,或者由另一个组件通过调用 stopService() 来停止它。 应用组件(如 Activity)可以通过调用 startService() 方法并传递 Intent 对象(指定服务并包含待使用服务的所有数据)来启动服务。服务通过 onStartCommand() 方法接收此 Intent。 例如,假设某 Activity 需要将一些数据保存到在线数据库中。该 Activity 可以启动...阅读全文

博文 2017-09-18 23:02:46 Code工作室

Kotlin学历之可见性修饰符

简述与java中的修饰符相比,Kotlin中多了一个叫internal,翻译过来是形容词内部,内置的意思。具体为什么会多一个,请看下期!开个玩笑啊- -,还有三个就跟java的用法基本类似了,但也会不同,下面一一讲解。internal 最关心的放最前面哈,大家肯定在思考,为什么会多这么一个修饰符,意思在哪?仔细回顾了一下之前的东西,突然明白了,在Kotlin中是可以有包级属性的,而java包下面只能是类或者接口等,Kotlin就可以很随意,定义变量、定义类、定义接口、定义函数都可以,具体可以看下面的图,编译器是通过的,再想想protected修饰符,它是内部类或者子类可以访问的修饰符,在Kotlin中就因为有了包级的属性,所以才多了个internal修饰符,为了区别于protected,被i...阅读全文

博文 2017-06-14 10:03:09 Pape

Kotlin 可见度

Java 可见度有public, package, protected, private, 默认是 package。Kotlin 也提供了4种:public, internal, protected, private, 默认是 public。 private 表示只在这个类(以及它的所有成员)之内可以访问; protected 与 private 一样, 另外在子类中也可以访问; internal 在 本模块之内, 凡是能够访问到这个类的地方, 同时也能访问到这个类的 internal 成员; public 凡是能够访问到这个类的地方, 同时也能访问这个类的 public 成员。 一个模块(module)是指一起编译的一组 Kotlin 源代码文件。 参考《Programming Kotli...阅读全文

博文 2017-05-27 15:20:12 jinkui

Kotlin语言学习笔记(4)

数据类(Data Classes) data class User(val name: String, val age: Int) 编译器自动生成的有: equals()/hashCode() toString() 形式为 "User(name=John, age=42)" componentN() 函数 copy() 函数 数据类必须符合以下条件。 主体构造器必须至少有一个参数。 搜有主体构造器的参数必须被标注为var或val。 数据类不可以是 abstract, open, sealed 或 inner。 缺省参数的例子。 data class User(val name: String = "", val age: Int = 0) 自动生成的copy函数。 fun copy(name...阅读全文

博文 2017-06-10 08:00:01 zwvista

Android之欢迎页动画(视差、3D翻转、放大缩小)

本篇介绍app欢迎页的一些动画效果 (1)视差效果 是否看到每个view位置移动了、且移动速度不一致 (2)3D翻转 (2)放大缩小 一、 自定义动画 说到欢迎页一定会想到ViewPager,动画设置自然想到ViewPager.setPageTransformer(boolean, PageTransformer) ,所以我们先自定义一个PageTransformer的子类WelcomePagerTransformer 来实现我们想要的动画效果 public class WelcomePagerTransformer implements ViewPager.PageTransformer { @Override public void transformPage(View view, fl...阅读全文

博文 2017-10-20 16:03:00 Mini_Moon

Kotlin语法糖--类和对象(下)之泛型

现在到了本节最重要的部分了,我们将要对Kotlin的泛型进行学习。泛型部分内容相对之前的学习稍有复杂,所以单独开篇进行讲解 泛型 与Java一样,Kotlin中的类也可以使用类型参数 class A(val t: T) { fun printlnValue() { println("$t") } fun getValue() : T { return t } fun printlnValue2(t1: T) { println("$t1") } } 如果要完整的使用这个类的话,应该这样初始化 val a:A = A(12) 但是,如果类型参数可以推断出来的话,这个类型参数就可以省略掉了 val a:A = A(12) 型变 先来看一段代码 val list: Muta...阅读全文

博文 2017-08-25 14:04:13 r17171709

Kotlin学习笔记(7)- 接口

系列文章全部为本人的学习笔记,若有任何不妥之处,随时欢迎拍砖指正。Kotlin学习笔记(1)- 环境配置Kotlin学习笔记(2)- 空安全Kotlin学习笔记(3)- 语法Kotlin学习笔记(4)- 流程控制Kotlin学习笔记(5)- 类Kotlin学习笔记(6)- 属性Kotlin学习笔记(7)- 接口 一、接口定义 和java一样,kotlin中的接口也是使用interface关键字。 interface Wing{ fun fly() } 和java不同的是,接口的实现不是使用implement关键字,而是冒号:,和继承一样。所以我认为kotlin中的接口是一种特殊的抽象类。 class InterfaceLesson : Wing{ override fun fly() { }...阅读全文

博文 2017-06-01 00:02:16 我爱吃栗子啊

Kotlin入门之泛型(1)

跟Java一样,在Kotlin中的类也可以拥有泛型参数: class Box(t: T) { var value = t } 通常,为了创建这样一个类的实例,我们需要提供类型参数: val box: Box = Box(1) 但是如果这个参数是可以被推断出来的,我们就可以忽略类型: val box = Box(1) // 1 has type Int, so the compiler figures out that we are talking about Box 泛型之可变性 Java类型系统最复杂的特性之一,就是通配符。但是Kotlin中一个都没有,取而代之的是两种其他实现:: declaration-site可变 和 类型预测(type proje...阅读全文

博文 2017-05-27 15:24:25 I二师兄I

Kotlin中的面向对象(一)

面向对象 面向对象的含义大家应该并不陌生,通过将事物抽象成对象,大大简化了程序的开发难度。我们常用的Java、Python、C++都属于面向对象的编程语言。Kotlin和java很相似,也是一种面向对象的语言。作为Kotlin中最重要的一部分,我们可以通过了解Kotlin的OOP进而了解这门语言,本文将从类、属性、接口、对象等多个方面介绍Kotlin的面向对象的特性。 类 和大部分语言类似,Kotlin使用class作为类的关键字,当我们声明一个类时,需要通过class加类名的方式实现: class ClassDemo{ }在声明一个类的时候,至少需要包含class关键字以及后面的类名,同时也可以根据需要增加类头(用来声明一些参数)和类体(花括号{}中包含的内容,可省略)。 构造函数 与ja...阅读全文

博文 2017-06-11 21:00:33 steveyg

Android编程权威指南笔记

版权声明:本文为博主原创文章,未经博主允许不得转载, 微信公众号『醉翁猫咪』特约作者 学习android开发,你需要对java语言,包括类,对象,接口,监听器,包,内部类,匿名内部类有所了解。 android studio 的下载与安装 可以从android开发者网站下载android studio:http://developer.android.com/sdk/。 首次安装需要从http://www.oracle.com下载并安装java开发者套件。如果需要帮助点击链接:Android Studio系列教程—下载与安装:http://mp.weixin.qq.com/s/_PW4oq76NLPQhQ7uh_Y4KA , Android Studio系列教程—基本设置与运行:http://...阅读全文

博文 2018-01-28 11:02:40 小猫咪1997

Kotlin学习(七): 类和继承、接口与实现

Safe 本文是学习Kotlin的类和继承相关,嵌套类相关,接口相关。 类 Kotlin的类的声明与Java一样,使用class关键字 class Invoice { } 类的声明包含类名,类头(指定类型参数,主构造函数等等),以及类主体,用大括号包裹。类头和类体是可选的;如果没有类体可以省略大括号。 class Empty 构造函数 Kotlin的类有两种构造函数,一种是主构造函数,一种是二级构造函数。主构造函数是写在类名后面(可以有可选的类型参数),使用constructor关键字声明 class Person constructor(firstName: String) { } 如果一个非抽象类没有声明构造函数(主构造函数或二级构造函数),它会产生一个没有参数的构造函数。构造函数是 p...阅读全文

博文 2017-05-27 15:10:42 叫我旺仔

Kotlin学习笔记(二)

类 构造函数 在Kotlin中一个类可以有一个主构造函数和一个或多个的次构造函数,主构造函数是类头的一部分 如果一个非抽象类没有声明任何(主或次)构造函数,它会有一个生成的 不带参数的主构造函数,构造函数的可见性是 public 主构造函数 /** * 主构造函数 */ class Kotlin constructor(key: String, value: String) { } /** * 省略了constructor关键字的主构造函数 * NOTE:这个主构造函数不能包含任何代码, 初始化代码可以放到init关键字的代码块 */ class Computer(price: Int) { var price: Int = 0 init { this.price = price } } /...阅读全文

博文 2017-05-27 15:14:24 王小宝wy

Kotlin最简单的入门教程——可见性修饰符,扩展,数据类,密封类

1 可见性修饰符 在 Kotlin 中有这四个可见性修饰符:private、 protected、 internal 和 public。 如果没有显式指定修饰符的话,默认可见性是 public 文件名和类名可以不同 // 文件名:example.kt package foo fun baz() {} class Bar {} 对于类内部声明的成员: private 意味着只在这个类内部(包含其所有成员)可见;protected—— 和 private一样 + 在子类中可见。internal —— 能见到类声明的 本模块内 的任何客户端都可见其 internal 成员;public —— 能见到类声明的任何客户端都可见其 public 成员。 对于Java用户:Kotlin 中外部类不能访问内...阅读全文

博文 2017-06-07 16:02:20 next_discover

自学Kotlin入门- 访问修饰符

访问修饰符 在 Kotlin 中有四种修饰词:private,protected,internal,以及 public 。默认的修饰符是 public。 下面将解释不同类型的声明作用域。 private //仅在同一个文件中可见 protected //同一个文件中或子类可见 public //所有调用的地方都可见 internal //同一个模块中可见 var user3 = User3("黑马程序员",11) user3.name 调用 class User3 { var name:String var age:Int constructor(name:String,age: Int){ this.name = name this.age = age } } 如果把上面User3的nam...阅读全文

博文 2017-07-09 21:03:48 马伟奇

Kotlin修饰符

private private私有的,只能被当前的类使用,如果当前的类被声明为私有的,那么其他的类都不能使用它,如果对象、接口被定义为私有,那么继承这个类的子类也不能使用它 protected 这个修饰符只能被用在类和接口的成员上,一个包的成员不能声明为protected,继承它的成员可见 internal 如果定义为internal的成员的话,那么它对整个module的类都是可见的,如果internal被定义在private类中,那么它的可见性只限制在当前类 public 公开的,最没有限制的修饰符,如果被定义在private类中,它的可见性只限制在当前...阅读全文

博文 2017-06-09 16:02:45 tonycya

Kotlin学习笔记-继承

超类kotlin.Any类是Kotlin中所有类的父类,相当于java中的java.lang.ObjectAny只有三个抽象方法:public open operator fun equals(other: Any?): Boolean public open fun hashCode(): Int public open fun toString(): String 继承Kotlin中的类默认都是final修饰的,要让一个类可以被继承必须使用open修饰open class Parent{ } class Children: Parent() { } 构造器子类有主构造方法时,子类必须在主构造器中初始化父类open class Parent(name: String) { } class ...阅读全文

博文 2017-06-07 11:02:11 Wang_Yi

Kotlin学习笔记(四十一)密封类

/** * 密封类 * 1.密封类用sealed关键词表示 * 2.密封类的子类只能定义在密封类的内部或同一个文件中,因为其构造方法为私有的 * 3.密封类相比于普通的open类,可以不被此文件外被继承,有效保护代码 * 4.与枚举的区别:密封类适用于子类可数的情况,枚举适用于实例可数的情况 */ sealed class PlayerCmd { //演奏控制类(密封类) val playerName: String = "Player" //演奏类 class Player(val url: String, val position: Long = 0): PlayerCmd() { fun showUrl() { println("$url, $position") } } class ...阅读全文

博文 2017-07-14 23:03:46 lkmc2

android activity自定义抽象父类

android开发最常用的组件就是activity,但是activity中也有很多常用的方法,几乎每次建立activity后都需要调用的一些方法流程,在此自定义一个父类-BaseActivity,使所有的activity都继承于这个父类,继承以后会自动继承父类的方法,并集成了一些界面跳转动画等公共效果, BaseActivity.java public abstract class BaseActivity extends AppCompatActivity { protected Context mContext; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInsta...阅读全文

博文 2017-09-05 15:03:16 nandecanghai123

Kotlin笔记 可见性修饰符

Kotlin有四种修饰符private, protected, internal, public Package public是默认的可见性 private在文件里可见 internal同一module中可见 protected不能对top-level的定义使用 Class private 类内部可见 protected 类内部和子类可见 internal 同一module Module是指在一起编译的kt文件集合 Intellij module maven或者gradle项...阅读全文

博文 2017-05-27 15:27:01 yangweigbh

自学Kotlin入门- 继承

类默认是final不能被继承,当一个类标识为open之后,这个类才可以被继承,继承的时候采用的是 : 语法。Kotlin和java一样也是只支持单继承,但可以多实现。继承之后子类拥有父类的属性和函数(去除private 修饰)。 var student = Student("黑马",11) student.a() 调用 open class User4(var name: String) { fun a(){ } } class Student(name:String,var age:Int):User4(name){ } 继承父类需要声明成Open,不然会报如下错误...阅读全文

博文 2017-07-09 22:04:10 马伟奇

Kotlin面向对象之泛型(Generics)

和Java类似,Kotlin在定义类的时候可以使用类型参数: class Box(t: T) { var value = t } 通常,要创建上述类的一个实例,我们需要提供类型参数: val box: Box = Box(1) 但是如果该类型参数可以推断出来,例如通过构造函数参数或其他方式,则可以省略类型参数的实参: val box = Box(1) // 1 has type Int, so the compiler figures out that we are talking about Box 差异(Variance) Java的类型系统中最棘手的部分之一是通配符类型。在Kotlin中则没有这个概念。取而代之的则是declaration-site ...阅读全文

博文 2017-05-27 15:18:37 樹學

Kotlin学习笔记(三)---Kotlin密封类

前言 密封类,可以理解为枚举,规定了有限个类型,不可以存在其他类型,但枚举每个枚举常量只存在一个示例,但是密封类的子类可以有多个示例,所以可以将密封类看做是枚举的拓展,基于枚举,高于枚举,青出于蓝而胜于蓝。 正文 密封类和普通类的区别,在于密封类使用了sealed修饰符,虽然密封类也可以有子类,但是所有子类都必须在与密封类自身相同的文件中声明。还是上栗子: sealed class Time { } data class Time1(val number: Int) : Time() { } data class Time2(val number: Int, val name: String) : Time() { } 注意:扩展密封类子类的类(间接继承者)可以放在任何位置,而无需在同一个文...阅读全文

博文 2017-06-26 18:03:46 T9的第三个三角

Kotlin最简单的入门教程——类和继承

Kotlin 中类和java中的类声明都是用关键字class 两者的区别主要在于构造函数: java中没有主构造函数次构造函数之分,但是kotlin有 1 主构造函数 在 Kotlin 中的一个类可以有一个主构造函数和一个或多个次构造函数。主 构造函数是类头的一部分:它跟在类名(和可选的类型参数)后。 class Person constructor(firstName: String) { } 如果主构造函数没有任何注解或者可见性修饰符,可以省略这个 constructor 关键字。 class Person(firstName: String) { } 主构造函数不能包含任何的代码。初始化的代码可以放 到以 init 关键字作为前缀的初始化块(initializer blocks)中: ...阅读全文

博文 2017-06-05 20:02:10 next_discover

Kotlin学习笔记(二十七)继承1

/** * 继承 * 1.类默认是final类的,不可以继承,需要继承需要加abstract或者open关键字 * 2.不加open关键词的方法也是final型的,不能被重写 * 3.对于abstract关键词修饰的方法,子类必须实现,不需要使用super关键字 * 4.如子类需要重写父类的属性,父类的属性需加open关键字,子类需加override关键字 */ abstract class Person(open val age: Int) { open fun work() { } } class Marker(age: Int) : Person(age) { override val age: Int get() = 0 override fun work() { super.wor...阅读全文

博文 2017-07-12 13:03:47 lkmc2

kotlin 学习记录 基本语法 (4 类和继承)

类和继承 类 在 Kotlin 中类用 class 声明: class Invoice{ } 类的声明包含类名,类头(指定类型参数,主构造函数等等),以及类主体,用大括号包裹。类头和类体是可选的;如果没有类体可以省略大括号。 class Empty 构造函数 在 Kotlin 中类可以有一个主构造函数以及多个二级构造函数。主构造函数是类头的一部分:跟在类名后面(可以有可选的类型参数)。 class Person constructor(firstName: String){ } 如果主构造函数没有注解或可见性说明,则 constructor 关键字是可以省略: class Person(firstName: String){ } 主构造函数不能包含任意代码。初始化代码可以放在以 init 做...阅读全文

博文 2017-06-10 15:00:37 baidu_36204446

Kotlin 笔记(一)

这几天花了点时间看了下kotlin,对我来说还是有一定难度的,慢慢填坑吧,以下是一部分笔记 有点乱,先凑合吧,没有太多写博客经验,整体过一遍后,再统一整理 Kotlin是面向表达式语言 1. 密封类 使用密封类的最主要的的好处体现在你使用 when 表达式。可以确保声明可以覆盖到所有的情形,不需要再使用 else 情形 2.伴随对象 你可以在你的类中声明一个伴随对象,这样你就可以像 java 那样把它当做静态方法调用,只需要它的类名做一个识别就好了 - 伴生对象可以用于让一个类即拥有实例化方法又有静态方法。 - 伴生对象必须声明在类中,且使用 companion object 关键字进行声明。 - 伴生对象与类可以互相访问各自的私有成员。 class TestCompanion{ compa...阅读全文

博文 2017-06-14 16:02:26 urwater

【Kotlin学习日记】Day14:密封类

大家好,我是William李梓峰,欢迎加入我的Kotlin学习之旅。今天是我学习 Kotlin 的第十四天,内容是 Sealed Classes - 密封类。 官方文档: https://kotlinlang.org/docs/reference/sealed-classes.html Sealed Classes - 密封类 Sealed classes are used for representing restricted class hierarchies, when a value can have one of the types from a limited set, but cannot have any other type.密封类是用于表示等级严谨的类,当一个值可以从一个...阅读全文

博文 2017-07-04 18:04:01 William李梓峰

Kotlin学习笔记(三十)类的可见性

/** * 访问修饰符 * 1.类的访问修饰符有private、protected、internal、public,可见性逐步加大 * 2.private仅本类可见 * 3.protected本类及其子类 * 4.internal模块内部可见 * 5.public全局可见 * * 注意点 * 1.类的属性默认是public */ class House //房子类 class Flower //花类 class Courtyard { //院子类 public val house: House = House() //房子 private val flower: Flower = Flower() //花 } class ForbiddenCity { //紫禁城类 protected va...阅读全文

博文 2017-07-13 18:03:45 lkmc2

Kotlin学习笔记-类和接口

类的声明class Person { } 修饰符 classModifierabstract //抽象类标示final //标示类不可继承,默认属性enum //标示类为枚举open //类可继承,类默认是final的annotation //注解类 accessModifier private //仅在同一个文件中可见protected //同一个文件中或子类可见public //所有调用的地方都可见internal //同一个模块中可见 属性class Person { var name: String = "tom" set(value) { field = value } get() = field.toUpperCase() var age: Int = 0 } 构造器Kotlin...阅读全文

博文 2017-06-06 16:02:19 Wang_Yi

Kotlin从入门到放弃<三>

在Java中用继承 封装 和 多态 那么在Kotlin中自然也是有的.这里就不累述了 //继承 class MyDrived() : MyBase() { override fun method1() {} } 3. 面向对象 3.1 类及其成员的可见性 Kotlin public : 均可见 private : 只用类内部可见 protected : 子类可见 internal : 模块内可见(model内可见) 3.2 object object这是个什么东西呢? 只有一个实例的类 不能自定义构造方法 可以实现接口,继承父类 本质上就是单利模式的最基本实现 3.3 伴生对象 伴生对象与Java中的静态方法类似 每个类可以对应一个伴生对象 伴生对象的成员全局只有一份 Kotlin中使用方式...阅读全文

博文 2017-06-14 18:02:15 東方月初

自学Kotlin入门- 重写

类里面的函数默认也是final类型的不能被重写,标记为open之后就可以被子类进行重写,重写的时候需要带上override标识符。 open class User4(var name: String) { open fun a(){ Log.i("tag","我是父类的方法") } } class Student(name:String,var age:Int):User4(name){ override fun a() { super.a() Log.i("tag","我是子类的方法") } } 打印结果: 07-09 22:22:54.868 21430-21430/com.maweiqi.oop I/tag: 我是父类的方法 07-09 22:22:54.872 21430-21430...阅读全文

博文 2017-07-09 23:04:09 马伟奇

Kotlin学习之-5.8 泛型

Kotlin学习之-5.8 泛型 和Java中一样,Kotlin 也可以使用类型参数: class Box(t: T) { var value = t } 一般情况下,要创建这样的类的实例,我们需要提供类型参数: val box: Box = Box(1) 但是如果参数的类型可以推断出来,例如,从构造器的参数或者其他方法可以推断出类型,这种情况下可以神略类型参数: val box = Box(1) // 参数‘1’是Int类型,所以编译器可以推断出类型参数是Int类型的 变量 在Java类型系统中比较难理解的是wildcard类型。详见Java泛型。 然而Kotlin中没有wildcard。 在Kotlin中,有两个其他东西来替代:declaration-site ...阅读全文

博文 2017-07-12 06:01:01 farmer_cc

Kotlin sealed class

密封类的概念对于我这种从古代语言进化到现代语言的老古董来说还是有点绕腾的啊! 1. 密封类用来表示受限的类继承结构 解释:类中 元素值限制在某一个集合之中 2. 密封类可以有子类,但是所有的子类都必须要内嵌在密封类中 解释:子类的属性都能通过密封类的"."点操作来访问 3. 密封类主要解决了值域确定性问题,即,密封类的取值只能在所有派生类中 解释:when语句里只要考虑到所有密封类值类型判断,我们就可以省去when的else子句 我们用一个demo来演示 //test.kt sealed class Exprdata class Const(val number: Double) : Expr()data class Sum(val e1: Expr, val e2: Expr) : Exp...阅读全文

博文 2017-10-20 16:00:01 woodzcl

Java & Groovy & Scala & Kotlin - 19.继承,抽象类与接口

Java 篇 抽象类 定义 抽象类是使用关键字 abstract 声明的类。抽象类与普通类的最大区别是抽象类不能被实例化。 抽象类可以拥有没有方法体的抽象方法也可以拥有普通方法,抽象方法使用 abstract 声明。 普通类可以使用关键字 extends 继承普通类,继承时必须重写所有抽象方法。 普通类可以继承抽象类,抽象类可以继承抽象类。 使用 定义一个抽象类 public abstract class View { protected int width; protected int height; public abstract String getDescription(); } 继承抽象类 public class Button extends View { private Str...阅读全文

博文 2017-08-20 18:03:53 bookislife