国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Scala之面向?qū)ο?/h1>

這篇具有很好參考價(jià)值的文章主要介紹了Scala之面向?qū)ο蟆OM麑?duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

Scala之面向?qū)ο? referrerpolicy=

目錄

Scala包:

基礎(chǔ)語(yǔ)法:

Scala包的三大作用:

包名的命名規(guī)范:

寫包的好處:

包對(duì)象:

導(dǎo)包說(shuō)明:

類和對(duì)象:

定義類:

封裝:

構(gòu)造器:

?主從構(gòu)造器的加載機(jī)制:

繼承:

基礎(chǔ)語(yǔ)法:

抽象屬性:

多態(tài):

Java中的多態(tài)測(cè)試

Scala測(cè)試如下:


Scala的面向?qū)ο笏枷牒蚃ava是一致的

Scala包:

基礎(chǔ)語(yǔ)法:

????????package 包名.類名

Scala包的三大作用:

? ? ? ? 區(qū)分相同名字的類

? ? ? ? 當(dāng)類很多時(shí),可以很好的管理類

? ? ? ? 控制訪問(wèn)范圍

包名的命名規(guī)范:

? ? ? ? ? ? ?一般是小寫字母+小圓點(diǎn)

? ?com.公司名.項(xiàng)目名.業(yè)務(wù)模塊名

寫包的好處:

在maven中可以將自己寫的包通過(guò)maven導(dǎo)入到項(xiàng)目中

在Scala中獨(dú)有的包的寫法? 和文件夾不對(duì)應(yīng)? 可以獨(dú)立存在

下圖是我在類下邊建的包,和正常的包一樣使用?

Scala之面向?qū)ο? referrerpolicy=

?包是可以嵌套的

內(nèi)層調(diào)用外層 不需要導(dǎo)包  atguigu包在techer下
外層調(diào)用內(nèi)層 對(duì)象 需要導(dǎo)包

如下代碼:

package chapter04
object Test_01_package {
  def main(args: Array[String]): Unit = {
  }
}
//Scala獨(dú)有的
package techer {
  import chapter04.techer.atguigu.Inner
  object test01t {
    def main(args: Array[String]): Unit = {
      println("hello  我是大哥 pack")
      //外層調(diào)用內(nèi)層 對(duì)象 需要導(dǎo)包
          //Inner.main是下邊那個(gè)包中的
      Inner.main(args)
    }
  }
  package atguigu {
    object Inner {
      def main(args: Array[String]): Unit = {
        println("Inner")
        //內(nèi)層調(diào)用外層 不需要導(dǎo)包  atguigu包在techer下
        test01t.main(args)
      }
    }
  }
}


包對(duì)象:

在Scala中包也是面向?qū)ο蟮?,只要在包的?nèi)部(只要在內(nèi)部都可以,內(nèi)層的嵌套也可以),都可以直接調(diào)用包對(duì)象的屬性和方法

如果包有嵌套,會(huì)出現(xiàn)覆蓋的情況,則會(huì)調(diào)用距離最近的包的屬性與方法(包距離最近則會(huì)后調(diào)用,會(huì)覆蓋先前調(diào)用的)

導(dǎo)包說(shuō)明:

導(dǎo)包是不支持嵌套的(導(dǎo)包后只能用它下邊的類和對(duì)象,不能再用它下邊的包,如果想使用它下邊包中的方法,就需要使用? ?.? ?但是當(dāng)我們導(dǎo)包直接導(dǎo)入它下邊的包? 就可以直接調(diào)用,不需要用? .? ? ?來(lái)使用)

Scala 中的三個(gè)默認(rèn)導(dǎo)入分別是
import java.lang._
import scala._
import scala.Predef._

類和對(duì)象:

類:可以看成一個(gè)模板
對(duì)象:表示具體的事物

我們?cè)谑褂脤?duì)象的時(shí)候,會(huì)以類為模板創(chuàng)建對(duì)象

定義類:

在Java中一個(gè)文件中只能有一個(gè)public? ??

在Scala中 默認(rèn)的是public 但是它在一個(gè)文件中可以創(chuàng)建多個(gè)伴生類和伴生對(duì)象

封裝:

在Scala中屬性只有兩種? 可變(var)與不可變(val)(分離了讀寫權(quán)限----類似與面向?qū)ο笾械姆庋b(封裝get? set? 方法? 是為了分離讀寫權(quán)限))

在Scala直接通過(guò)屬性的類型來(lái)分離

在Scala中屬性的類型已經(jīng)封裝成? ? var----private? ? ? ?val----private final? ? ? ? ?

并且get? set方法也已經(jīng)封裝(封裝成了注解,在使用get? set方法的時(shí)候需要 先引入注解@BeanProperty----不過(guò)該注解的作用域只有一個(gè)屬性? 意思是? 一個(gè)屬性需要設(shè)置一個(gè)注解)

構(gòu)造器:

面向?qū)ο蟮恼Z(yǔ)言基本都有構(gòu)造器(構(gòu)造方法),如果在類中不寫構(gòu)造方法? 默認(rèn)構(gòu)造器為空參構(gòu)造方法

在Scala中也有構(gòu)造器,與Java不同,

Scala的構(gòu)造器是在類名上加個(gè)()? ?是主構(gòu)造器(主構(gòu)造器無(wú)參的時(shí)候可以省略()? 表示默認(rèn)是可以無(wú)參構(gòu)造的? 類同Java)

有主構(gòu)造器就一定有從構(gòu)造器

在主構(gòu)造器的內(nèi)部可以定義輔助構(gòu)造器 定義的格式是固定的,在從構(gòu)造器的內(nèi)部第一行代碼必須是直接或者間接的調(diào)用主構(gòu)造器

class Person03(name:String){
  var name1:String=name
def this()
  {
    this("唐不唐")
    println("hello world")
  }
}

?主從構(gòu)造器的加載機(jī)制:

在Scala中沒(méi)有類加載機(jī)制,所以在代碼直接調(diào)用輔助構(gòu)造器的時(shí)候它是不知道類中的內(nèi)容的, 所以上邊要求(從構(gòu)造器的內(nèi)部第一行代碼必須是直接或者間接的調(diào)用主構(gòu)造器),這就是原因所在,獲取類信息(加載一遍),調(diào)用完后才會(huì)返回從構(gòu)造器繼續(xù)執(zhí)行

根據(jù)main方法中你的參數(shù)決定你調(diào)用那個(gè)構(gòu)造器

從構(gòu)造器是有先后順序的,后邊的只能調(diào)用前面的(所調(diào)用的構(gòu)造器必須在本構(gòu)造器之前)

從構(gòu)造器的名稱統(tǒng)一為this(根基參數(shù)的個(gè)數(shù)來(lái)區(qū)分)

主構(gòu)造器是可以傳參的 參數(shù)可以當(dāng)作屬性來(lái)使用(參數(shù)類型如果省略,默認(rèn)val)

繼承:

繼承關(guān)鍵字:extends

基礎(chǔ)語(yǔ)法:

????????class 子類名 extends 父類名 { 類體 }

子類繼承父類的屬性方法

scala 是單繼承

繼承的本質(zhì):其實(shí)與Java是完全不一樣的

在創(chuàng)建子類的對(duì)象時(shí),Scala會(huì)先創(chuàng)建父類的對(duì)象讓后在外層創(chuàng)建子類對(duì)象(同Java)

Scala繼承的本質(zhì)就是繼承父類的一個(gè)構(gòu)造器(繼承那個(gè)構(gòu)造器(參數(shù)個(gè)數(shù)來(lái)區(qū)別)就會(huì)調(diào)用那個(gè))

抽象屬性:

就是不寫等號(hào),寫抽象方法需要把類改成抽象類

抽象屬性在使用的時(shí)候需要繼承它? ?讓后需要重寫屬性和方法(在Java中是不需要重寫屬性的,因?yàn)镾cala底層是對(duì)屬性進(jìn)行封裝,自帶方法)

在重寫抽象類中的非抽象方法的時(shí)候需要在重寫的方法前面加上? ? override? ?關(guān)鍵字

子類調(diào)用父類的方法的時(shí)候使用關(guān)鍵字super??

子類對(duì)抽象屬性進(jìn)行實(shí)現(xiàn),父類抽象屬性可以用 var 修飾;

子類對(duì)非抽象屬性重寫,父類非抽象屬性只支持 val 類型,而不支持 var。
因?yàn)?var 修飾的為可變變量,子類繼承之后就可以直接使用(可以直接進(jìn)行修改),沒(méi)有必要重寫 ? ?

多態(tài):

父類的引用指向子類的實(shí)例

Java中的多態(tài)測(cè)試

:在父子共有的屬性和方法調(diào)用的是父類還是子類:

public class Polymorphic {
    public static void main(String[] args) {
        Person person=new Student();
        System.out.println(person.name);
        person.sayhi();
    }
    public static class Person{
     String   name="Person";
     public void sayhi()
     {
         System.out.println("person  sayhi");
     }
    }
public static class Student extends Person{
        String name="Student";
        public void sayhi()
        {
            System.out.println("student sayhi");
        }
}

}

屬性是調(diào)用父類? ?方法是調(diào)用子類? ?

在進(jìn)行多態(tài)的時(shí)候是先將整個(gè)內(nèi)存先把父類寫入里面,再把子類嵌套到外邊

引用是使用棧 把地址值是先指向父類的? ?指向誰(shuí)就調(diào)用誰(shuí)的屬性,但是調(diào)用方法是一層一層的調(diào)用,是不斷的被重寫的,所以方法是調(diào)用子類

Scala之面向?qū)ο? referrerpolicy=

而Scala與Java不同 都是調(diào)用的子類的

Scala測(cè)試如下:

package chapter04

object Test07_Polymorphic {
  def main(args: Array[String]): Unit = {
       val  per:Person07=new Student07
       per.sayhi();
    println(per.name)
  }
}
class Person07()
{
  val name:String="dsdsd"
def sayhi():Unit={
  println("hi person")
}
}
class Student07 extends Person07{
  override val name: String = "Student"
override def sayhi(): Unit =
  {
    println("Student say hi")
  }
}

Scala之面向?qū)ο? referrerpolicy=

?匿名子類:

可以使用匿名子類直接調(diào)用抽象類

也可以直接new這個(gè)抽象子類

匿名子類是自動(dòng)使用多態(tài)的

多態(tài)無(wú)法調(diào)用子類獨(dú)有的屬性和方法,外部無(wú)法使用匿名子類中特有的(它自己的)方法和屬性文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-414151.html

到了這里,關(guān)于Scala之面向?qū)ο蟮奈恼戮徒榻B完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包