Jadual Kandungan
Pakej Scala:
Sintaks asas:
Tiga fungsi utama pakej Scala:
Konvensyen penamaan untuk nama pakej:
Faedah menulis pakej:
Objek pakej:
Perihalan pakej pengenalan:
多态:
Java中的多态测试
Scala测试如下:
Rumah Java javaTutorial Bagaimana Java dan Scala melaksanakan pengaturcaraan berorientasikan objek

Bagaimana Java dan Scala melaksanakan pengaturcaraan berorientasikan objek

May 07, 2023 pm 01:46 PM
java scala

Pakej Scala:

Sintaks asas:

nama pakej pakej. nama kelas

Tiga fungsi utama pakej Scala:

Bezakan antara yang dengan nama yang sama Kelas

Apabila terdapat banyak kelas, kelas boleh diurus dengan baik

Kawal skop akses

Konvensyen penamaan untuk nama pakej:

biasanya huruf kecil + titik kecil

com.Nama syarikat.Nama projek.Nama modul perniagaan

Faedah menulis pakej:

Dalam maven, anda boleh mengimport pakej anda menulis ke dalam Dalam projek

Cara unik menulis pakej dalam Scala tidak sepadan dengan folder dan boleh wujud secara bebas

Gambar di bawah ialah pakej yang saya bina di bawah kelas, yang boleh digunakan seperti pakej biasa

Bagaimana Java dan Scala melaksanakan pengaturcaraan berorientasikan objek

Pakej boleh bersarang

内层调用外层 不需要导包  atguigu包在techer下
Salin selepas log masuk
rrree

Kod berikut:

外层调用内层 对象 需要导包
Salin selepas log masuk

Objek pakej:

Begitu juga untuk pakej dalam Scala Object-oriented, anda boleh terus memanggil sifat dan kaedah objek pakej selagi ia berada di dalam pakej (selagi ia berada di dalam, sarang dalaman juga okay)

Jika pakej bersarang, penggantian akan muncul Dalam kes , sifat dan kaedah pakej terdekat akan dipanggil (pakej yang paling hampir akan dipanggil kemudian dan akan menimpa yang dipanggil sebelum ini)

Perihalan pakej pengenalan:

Pakej pengenalan tidak disokong Nested (selepas mengimport pakej, anda hanya boleh menggunakan kelas dan objek di bawahnya dan anda tidak boleh menggunakan pakej di bawahnya. Jika anda mahu gunakan kaedah dalam pakej di bawahnya, anda perlu menggunakan . Tetapi apabila kami mengimport pakej, kami terus mengimport pakej di bawahnya. Anda boleh memanggilnya secara langsung tanpa menggunakan scala >Kelas dan objek:

Kelas: boleh dianggap sebagai templat
Objek: mewakili perkara tertentuApabila kita menggunakan objek, Objek akan dibuat menggunakan kelas sebagai templat

Tentukan kelas:

Di Java hanya boleh ada satu orang awam dalam fail

Lalainya ialah awam dalam Scala tetapi ia berada dalam kelas berbilang pasangan dan objek pengiring boleh dibuat dalam fail


Enkapsulasi:

Terdapat hanya dua jenis sifat dalam Scala, boleh ubah (var) dan tidak boleh ubah (val) (kebenaran baca dan tulis yang dipisahkan - ---Serupa dengan enkapsulasi dalam berorientasikan objek (the kaedah get set dirangkumkan untuk memisahkan kebenaran baca dan tulis))

Dalam Scala, ia dipisahkan terus oleh jenis atribut

Jenis atribut dalam Scala Ia telah dikapsulkan ke dalam var----private val----private final

dan kaedah get set juga telah dikapsulkan (dirangkumkan ke dalam anotasi. Apabila menggunakan kaedah get set, anda perlu memperkenalkan anotasi @BeanProperty-- --Walau bagaimanapun, skop anotasi ini hanya mempunyai satu atribut, yang bermaksud bahawa satu atribut perlu ditetapkan dengan anotasi)

Pembina:

Bahasa berorientasikan objek pada asasnya mempunyai pembina (kaedah pembinaan), jika Jangan tulis pembina dalam kelas Pembina lalai ialah pembina parameter kosong

Terdapat juga pembina dalam Scala,

Pembina Scala ialah tambah a ( pada nama kelas ) ialah pembina utama (() boleh ditinggalkan apabila pembina utama tidak mempunyai parameter, yang bermaksud ia boleh dibina tanpa parameter secara lalai, serupa dengan Java)

Jika ada ialah pembina utama, mesti ada pembina hamba
Format definisi pembina tambahan yang boleh ditakrifkan di dalam pembina utama adalah tetap Baris pertama kod di dalam pembina hamba mesti secara langsung atau tidak langsung memanggil utama pembina

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)
      }
    }
  }
}
Salin selepas log masuk

Pembina tuan-hamba Mekanisme pemuatan:

Tiada mekanisme pemuatan kelas dalam Scala, jadi apabila kod itu memanggil pembina tambahan secara langsung, ia tidak mengetahui kandungan kelas, jadi keperluan di atas (dari baris pertama di dalam pembina Kod mesti memanggil pembina utama secara langsung atau tidak langsung), inilah sebabnya, dapatkan maklumat kelas (muat sekali), dan kemudian kembali ke pembina untuk meneruskan pelaksanaan selepas panggilan selesai

Mengikut parameter anda dalam kaedah utama Tentukan pembina yang anda panggil

Pembina hamba adalah teratur, yang kemudian hanya boleh memanggil yang sebelumnya (pembina yang dipanggil mesti sebelum pembina ini)

Pembina hamba Nama-nama disatukan seperti ini (dibezakan dengan bilangan parameter asas)
Pembina utama boleh melepasi parameter dan menggunakannya sebagai atribut (jika jenis parameter ditinggalkan, lalainya ialah val)

Warisan:

Warisi kata kunci: memanjang

Sintaks asas:

nama subkelas kelas melanjutkan kelas induk name {class body}

Subclass mewarisi atribut dan kaedah kelas induk

Scala is single inheritance
Intipati warisan: Sebenarnya, ia sepenuhnya berbeza daripada Java

Apabila mencipta objek subkelas, Scala akan mula-mula mencipta objek kelas induk dan kemudian mencipta objek subkelas di lapisan luar (sama seperti Java)

Intipati warisan Scala adalah untuk mewarisi pembina kelas induk (warisi pembina itu (bilangan parameter) Untuk membezakan) yang akan dipanggil)

Atribut abstrak:

Hanya jangan tulis tanda sama kepada tulis kaedah abstrak, anda perlu menukar kelas kepada kelas abstrak

Atribut abstrak digunakan Kadangkala anda perlu mewarisinya dan kemudian anda perlu menulis semula sifat dan kaedah (tidak perlu menulis semula sifat dalam Java , kerana lapisan bawah Scala merangkum sifat dan mempunyai kaedah tersendiri)

在重写抽象类中的非抽象方法的时候需要在重写的方法前面加上 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");
        }
}
 
}
Salin selepas log masuk

属性是调用父类 方法是调用子类

在进行多态的时候是先将整个内存先把父类写入里面,再把子类嵌套到外边

引用是使用栈 把地址值是先指向父类的 指向谁就调用谁的属性,但是调用方法是一层一层的调用,是不断的被重写的,所以方法是调用子类

Bagaimana Java dan Scala melaksanakan pengaturcaraan berorientasikan objek

而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")
  }
}
Salin selepas log masuk

Bagaimana Java dan Scala melaksanakan pengaturcaraan berorientasikan objek

匿名子类:

可以使用匿名子类直接调用抽象类

也可以直接new这个抽象子类

匿名子类是自动使用多态的

多态无法调用子类独有的属性和方法,外部无法使用匿名子类中特有的(它自己的)方法和属性

Atas ialah kandungan terperinci Bagaimana Java dan Scala melaksanakan pengaturcaraan berorientasikan objek. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Nombor Sempurna di Jawa Nombor Sempurna di Jawa Aug 30, 2024 pm 04:28 PM

Panduan Nombor Sempurna di Jawa. Di sini kita membincangkan Definisi, Bagaimana untuk menyemak nombor Perfect dalam Java?, contoh dengan pelaksanaan kod.

Penjana Nombor Rawak di Jawa Penjana Nombor Rawak di Jawa Aug 30, 2024 pm 04:27 PM

Panduan untuk Penjana Nombor Rawak di Jawa. Di sini kita membincangkan Fungsi dalam Java dengan contoh dan dua Penjana berbeza dengan contoh lain.

Weka di Jawa Weka di Jawa Aug 30, 2024 pm 04:28 PM

Panduan untuk Weka di Jawa. Di sini kita membincangkan Pengenalan, cara menggunakan weka java, jenis platform, dan kelebihan dengan contoh.

Nombor Smith di Jawa Nombor Smith di Jawa Aug 30, 2024 pm 04:28 PM

Panduan untuk Nombor Smith di Jawa. Di sini kita membincangkan Definisi, Bagaimana untuk menyemak nombor smith di Jawa? contoh dengan pelaksanaan kod.

Soalan Temuduga Java Spring Soalan Temuduga Java Spring Aug 30, 2024 pm 04:29 PM

Dalam artikel ini, kami telah menyimpan Soalan Temuduga Spring Java yang paling banyak ditanya dengan jawapan terperinci mereka. Supaya anda boleh memecahkan temuduga.

Cuti atau kembali dari Java 8 Stream Foreach? Cuti atau kembali dari Java 8 Stream Foreach? Feb 07, 2025 pm 12:09 PM

Java 8 memperkenalkan API Stream, menyediakan cara yang kuat dan ekspresif untuk memproses koleksi data. Walau bagaimanapun, soalan biasa apabila menggunakan aliran adalah: bagaimana untuk memecahkan atau kembali dari operasi foreach? Gelung tradisional membolehkan gangguan awal atau pulangan, tetapi kaedah Foreach Stream tidak menyokong secara langsung kaedah ini. Artikel ini akan menerangkan sebab -sebab dan meneroka kaedah alternatif untuk melaksanakan penamatan pramatang dalam sistem pemprosesan aliran. Bacaan Lanjut: Penambahbaikan API Java Stream Memahami aliran aliran Kaedah Foreach adalah operasi terminal yang melakukan satu operasi pada setiap elemen dalam aliran. Niat reka bentuknya adalah

TimeStamp to Date in Java TimeStamp to Date in Java Aug 30, 2024 pm 04:28 PM

Panduan untuk TimeStamp to Date di Java. Di sini kita juga membincangkan pengenalan dan cara menukar cap waktu kepada tarikh dalam java bersama-sama dengan contoh.

Program Java untuk mencari kelantangan kapsul Program Java untuk mencari kelantangan kapsul Feb 07, 2025 am 11:37 AM

Kapsul adalah angka geometri tiga dimensi, terdiri daripada silinder dan hemisfera di kedua-dua hujungnya. Jumlah kapsul boleh dikira dengan menambahkan isipadu silinder dan jumlah hemisfera di kedua -dua hujungnya. Tutorial ini akan membincangkan cara mengira jumlah kapsul yang diberikan dalam Java menggunakan kaedah yang berbeza. Formula volum kapsul Formula untuk jumlah kapsul adalah seperti berikut: Kelantangan kapsul = isipadu isipadu silinder Dua jumlah hemisfera dalam, R: Radius hemisfera. H: Ketinggian silinder (tidak termasuk hemisfera). Contoh 1 masukkan Jejari = 5 unit Ketinggian = 10 unit Output Jilid = 1570.8 Unit padu menjelaskan Kirakan kelantangan menggunakan formula: Kelantangan = π × r2 × h (4

See all articles