91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java?Scala面向對象怎么使用

發布時間:2023-04-15 16:54:03 來源:億速云 閱讀:116 作者:iii 欄目:開發技術

今天小編給大家分享一下Java Scala面向對象怎么使用的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

Scala包:

基礎語法:

package 包名.類名

Scala包的三大作用:

區分相同名字的類

當類很多時,可以很好的管理類

控制訪問范圍

包名的命名規范:

一般是小寫字母+小圓點

com.公司名.項目名.業務模塊名

寫包的好處:

在maven中可以將自己寫的包通過maven導入到項目中

在Scala中獨有的包的寫法  和文件夾不對應  可以獨立存在

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

Java?Scala面向對象怎么使用

包是可以嵌套的

內層調用外層 不需要導包  atguigu包在techer下
外層調用內層 對象 需要導包

 如下代碼:

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

包對象:

在Scala中包也是面向對象的,只要在包的內部(只要在內部都可以,內層的嵌套也可以),都可以直接調用包對象的屬性和方法

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

導包說明:

導包是不支持嵌套的(導包后只能用它下邊的類和對象,不能再用它下邊的包,如果想使用它下邊包中的方法,就需要使用   .   但是當我們導包直接導入它下邊的包  就可以直接調用,不需要用  .     來使用)

Scala 中的三個默認導入分別是
import java.lang._
import scala._
import scala.Predef._

類和對象:

類:可以看成一個模板
對象:表示具體的事物
我們在使用對象的時候,會以類為模板創建對象

定義類:

在Java中一個文件中只能有一個public    

在Scala中 默認的是public 但是它在一個文件中可以創建多個伴生類和伴生對象

封裝:

在Scala中屬性只有兩種  可變(var)與不可變(val)(分離了讀寫權限----類似與面向對象中的封裝(封裝get  set  方法  是為了分離讀寫權限))

在Scala直接通過屬性的類型來分離

在Scala中屬性的類型已經封裝成    var----private       val----private final         

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

構造器:

面向對象的語言基本都有構造器(構造方法),如果在類中不寫構造方法  默認構造器為空參構造方法

在Scala中也有構造器,與Java不同,

Scala的構造器是在類名上加個()   是主構造器(主構造器無參的時候可以省略()  表示默認是可以無參構造的  類同Java)

有主構造器就一定有從構造器

在主構造器的內部可以定義輔助構造器 定義的格式是固定的,在從構造器的內部第一行代碼必須是直接或者間接的調用主構造器

class Person03(name:String){
  var name1:String=name
def this()
  {
    this("唐不唐")
    println("hello world")
  }
}
主從構造器的加載機制:

在Scala中沒有類加載機制,所以在代碼直接調用輔助構造器的時候它是不知道類中的內容的, 所以上邊要求(從構造器的內部第一行代碼必須是直接或者間接的調用主構造器),這就是原因所在,獲取類信息(加載一遍),調用完后才會返回從構造器繼續執行

根據main方法中你的參數決定你調用那個構造器

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

從構造器的名稱統一為this(根基參數的個數來區分)

主構造器是可以傳參的 參數可以當作屬性來使用(參數類型如果省略,默認val)

繼承:

繼承關鍵字:extends

基礎語法:

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

子類繼承父類的屬性和方法

scala 是單繼承

繼承的本質:其實與Java是完全不一樣的

在創建子類的對象時,Scala會先創建父類的對象讓后在外層創建子類對象(同Java)

Scala繼承的本質就是繼承父類的一個構造器(繼承那個構造器(參數個數來區別)就會調用那個)

抽象屬性:

就是不寫等號,寫抽象方法需要把類改成抽象類

抽象屬性在使用的時候需要繼承它   讓后需要重寫屬性和方法(在Java中是不需要重寫屬性的,因為Scala底層是對屬性進行封裝,自帶方法)

在重寫抽象類中的非抽象方法的時候需要在重寫的方法前面加上    override   關鍵字

子類調用父類的方法的時候使用關鍵字super  

子類對抽象屬性進行實現,父類抽象屬性可以用 var 修飾;

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

多態:

父類的引用指向子類的實例

Java中的多態測試

:在父子共有的屬性和方法調用的是父類還是子類:

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");
        }
}
 
}

屬性是調用父類   方法是調用子類   

在進行多態的時候是先將整個內存先把父類寫入里面,再把子類嵌套到外邊

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

Java?Scala面向對象怎么使用

而Scala與Java不同 都是調用的子類的

Scala測試如下:
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")
  }
}

Java?Scala面向對象怎么使用

匿名子類:

可以使用匿名子類直接調用抽象類

也可以直接new這個抽象子類

匿名子類是自動使用多態的

多態無法調用子類獨有的屬性和方法,外部無法使用匿名子類中特有的(它自己的)方法和屬性

以上就是“Java Scala面向對象怎么使用”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

犍为县| 阿勒泰市| 洞头县| 汤原县| 嵊泗县| 鄂温| 门头沟区| 邢台市| 和平县| 黄梅县| 饶阳县| 东乡族自治县| 元阳县| 徐汇区| 博客| 哈尔滨市| 南部县| 河西区| 阿城市| 南溪县| 台中县| 太仆寺旗| 荆门市| 兴仁县| 施甸县| 麻阳| 阜平县| 乐安县| 万宁市| 竹溪县| 新泰市| 北票市| 碌曲县| 天祝| 盘锦市| 大连市| 沭阳县| 丰镇市| 健康| 甘孜县| 海门市|