日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

kotlin和java差别_Kotlin和Java的常用方法的区别总结

發布時間:2023/12/15 java 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 kotlin和java差别_Kotlin和Java的常用方法的区别总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一.kotlin和java的常用語法區別

1)、類、public class、public final class

java

1

2public final class User{

}

1

2public class User{

}

kotlin

? kotlin中一個類默認就是public final的,所以如果想要一個類能被繼承,那么需要申明open class

1class User

1open class User

2)、數據模型bean,這里區分一下參數是final還是普通參數,對應kotlin中的val和var

java

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21final class User{

private final String name;

private String phone;

public User(String name, String phone){

this.name = name;

this.phone = phone;

}

public String getName(){

return name;

}

public String getPhone(){

return phone;

}

public void setPhone(String phone){

this.phone = phone;

}

}

kotlin

kotlin中定義一個數據模型類,會非常簡單,因為默認有構造函數,和get和set方法,這里需要注意val對應的是java中的final申明字符串,而var對應的是普通字符串變量。

1class User(val name: String, var phone: String)

3)、可選參數構造函數的區別

java

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15final class User{

private String name;

private String lastName;

public User(String name){

this(name, "");

}

public User(String name, String lastName){

this.name = name;

this.lastName = lastName;

}

// And Getters & Setters

}

kotlin

kotlin中可以直接在類的構造函數中定義參數的默認值,這種定義了默認值的參數就變成可選參數。

1class User(var name: String, var lastName: String = "")

4)、類的屬性自定義get、set方法

java

1

2

3

4

5

6

7

8

9

10

11

12

13public class Document{

private String id = "00x";

public String getId(){

return id;

}

public void setId(String id){

if(id != null && !id.isEmpty()) {

this.id = id;

}

}

}

kotlin

? kotlin中如果要自定義set方法,可以在屬性下面重寫set(value)方法,這里注意的就是field代表的就是當前屬性,比如這里就是指id

1

2

3

4

5

6class Document{

var id : String = "00x"

set(value) {

if(value.isNotEmpty()) field = value

}

}

5)、類、內部類、靜態內部類

java

1

2

3

4

5

6

7

8

9public class Documment{

class InnerClass{

}

public static class StaticInnerClass{

}

}

kotlin

1

2

3

4class Document{

inner class InnerClass

class StaticInnerClass

}

6)、抽象類、繼承抽象類

java

1

2

3

4

5

6

7

8

9

10public abstract class Document{

public abstract int calculateSize();

}

public class Photo extends Document{

@Override

public int calculateSize(){

}

}

kotlin

1

2

3

4

5

6

7

8

9abstract class Document{

abstract fun calculateSize(): Int

}

class Photo : Document() {

override fun calculateSize(): Int {

}

}

7)、接口、實現接口

java

1

2

3

4

5

6

7

8

9

10public interface Printable{

void print();

}

public class Document implements Printable{

@Override

public void print(){

}

}

kotlin

? 這里注意接口實現和繼承抽象類的區別是:接口不需要(),但繼承類是需要()的,這里其實()指代的是父類的構造函數。

1

2

3

4

5

6

7

8

9interface Printable{

fun print()

}

class Document : Printable{

override fun print() {

}

}

8)、單例模式 / 靜態類、靜態方法

java

1

2

3

4

5

6

7

8public class Document{

private static final Document INSTANCE = new Document();

public static Document getInstance(){

return INSTANCE;

}

}

kotlin

? kotlin中的單例模式非常簡潔,一個類申明為object即是單例,還有object申明的類內部的方法都是靜態方法

1

2

3object Document {

}

?

? 這里額外記錄一下kotlin中如果只想類中某一部分方法申明為靜態方法,可以用到companion object申明這些方法,companion object內申明的方法都是靜態方法

1

2

3

4

5

6

7companion object {

fun startActivity(context:Context) {

val intent = Intent()

intent.setClass(context, HomeActivity::class.java)

context.startActivity(intent)

}

}

9)、擴展方法

? java

1

2

3

4

5

6

7

8public class ByteArrayUtils{

public static String toHexString(byte[] data){

}

}

final byte[] dummyData = new byte[10];

final String hexValue = ByteArrayUtils.toHexString(dummyData);

? kotlin

? kotlin可以直接申明一個類的擴展函數,這樣一個類的對象就可以直接調用該擴展函數

1

2

3

4

5

6fun ByteArray.toHex() : String {

}

val dummyData = byteArrayOf()

val hexValue = dummyData.toHex()

二.kotlin中遇到的問題1)、kotlin.NotImplementedError: An operation is not implemented: Not yet implemented

原因是kotlin中類實現接口的方法,或者抽象類的方法,默認方法里會有

TODO( ... ),刪除掉這部分代碼,該異常即不會出現。

總結

以上是生活随笔為你收集整理的kotlin和java差别_Kotlin和Java的常用方法的区别总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。