芬兰湾的科特林中如何实现面向对象

  介绍

芬兰湾的科特林中如何实现面向对象?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

<强>面向对象

面向对象的含义大家应该并不陌生,通过将事物抽象成对象,大大简化了程序的开发难度。我们常用的Java、Python、c++都属于面向对象的编程语言.Kotlin和Java很相似,也是一种面向对象的语言。作为芬兰湾的科特林中最重要的一部分,我们可以通过了解芬兰湾的科特林的OOP进而了解这门语言,本文将从类,属性,接口,对象等多个方面介绍芬兰湾的科特林的面向对象的特性。

<强>类

和大部分语言类似,芬兰湾的科特林使用类作为类的关键字,当我们声明一个类时,需要通过类加类名的方式实现:

类ClassDemo {
  
  }
  

在声明一个类的时候,至少需要包含类关键字以及后面的类名,同时也可以根据需要增加类头(用来声明一些参数)和类体(花括号{}中包含的内容,可省略)。

<强>构造函数

与java不同的是,虽然都可以包含多个构造函数,但java中的各个构造函数都是平级的,而芬兰湾的科特林中却分为了两级(主构造函数和二级构造函数),主构造函数是包含在类头中的,需要在初始化方法中实现额外的操作,而二级构造函数可以在函数体中实现所有操作

//主构造函数,构造函数和初始化都可省略   类ClassDemo构造函数(类型:字符串){   init {   System.out.println(类型)   }   }   

在主构造函数中传入的参数可以在类体中为属性赋值,也可以直接在主构造函数中声明

类ClassDemo(类型:字符串,var prop2:字符串类型=){
  var prop1=类型
  }
  

二级构造函数必须包含构造函数

类ClassDemo {
  构造函数(类型:字符串){
  System.out.println(类型)
  }
  }
  

对于有主构造函数的类而言,每个二级构造函数都要,或直接或间接通过另一个二级构造函数代理主构造函数。在同一个类中代理另一个构造函数使用这个关键字:

//包含主构造函数的二级构造函数   类ClassDemo(类型:字符串){   构造函数(类型:字符串参数:String):这个(类型){   system . out。println(类型+参数)   }   }   

无论有没有声明主构造函数,芬兰湾的科特林都会提供一个构造函数的方法,有时可能不希望将某个类的构造函数暴露出来(比如实现单例模式时),那么就需要对主构造函数进行处理

类ClassDemo私有构造函数(){
  
  }
  

当我们想创建实例时,可以直接调用对应的构造函数进行创建

=ClassDemo var演示(“你好world")
  val演示=ClassDemo (“hello",“world")
  

我们注意到,在芬兰湾的科特林中无论是声明属性还是创建实例,会有两种方式,var和val, val类似于java中的决赛,通过它声明的内容是无法变化的,而var和val相反,声明的内容既可以读取也可以修改。

<强>继承

在芬兰湾的科特林中,所有的类会默认继承任何这个父类,但任何并不完全等同于java中类的对象,因为它只有=(),hashCode()和toString()这三个方法。当我们想定义一个父类时,需要使用开放的关键字

{开放类基础
  
  }
  

然后在子类中使用冒号”:“进行继承

类子类:基地(){
  
  }
  

如果父类有构造函数,那么必须在子类的主构造函数中进行继承,没有的话则可以选择主构造函数或二级构造函数

//父类   开放类库(类型:字符串){      }//子类   类的子类(类型:字符串):基础(类型){      }      

<强>重写

芬兰湾的科特林中的重写和java中也有所不同,因为芬兰湾的科特林提倡所有的操作都是明确的,因此需要将希望重写的方法设为打开

覆盖有趣funDemo () {
  super.funDemo ()
  }
  

覆盖重写的函数也是开放的,如果希望它不被重写(前提是这个类可以被继承),可以在前面增加最后标签

芬兰湾的科特林中如何实现面向对象