Latest web development tutorials

Akses pengubah scala

Scala dan Jawa akses pengubah, seperti dasar, masing-masing: pribadi, dilindungi, publik.

Jika Anda tidak menentukan akses karakter pengubah, secara default, Scala objek tingkat akses yang umum.

kualifikasi scala secara pribadi, lebih ketat dari Jawa, dalam kasus kelas bersarang, kelas luar bahkan tidak dapat bersarang akses anggota kelas pribadi.


Swasta (Private) anggota

Dimodifikasi dengan kata kunci pribadi, anggota dengan tanda ini hanya berisi kelas atau objek anggota didefinisikan internal yang terlihat, aturan yang sama juga berlaku untuk kelas batin.

class Outer{
    class Inner{
    private def f(){println("f")}
    class InnerMost{
        f() // 正确
        }
    }
    (new Inner).f() //错误
}

(New batin) .f () akses tidak sah di Inner karena f dinyatakan sebagai pribadi, tetapi akses tidak dalam kategori batin.

Akses f tapi tidak ada masalah di terdalam, karena kunjungan ini termasuk dalam kelas batin.

Java diperbolehkan akses ke kedua, karena memungkinkan akses anggota kelas pribadi luar kelas batin.


Perlindungan anggota (Protected)

Di scala, perlindungan akses anggota (Protected) lebih ketat dari java. Karena hanya memungkinkan perlindungan anggota subclass didefinisikan dalam anggota dari kelas diakses. Dalam java, menggunakan kata kunci anggota dimodifikasi dilindungi, selain definisi subclass dari kelas dapat mengakses anggota, dengan paket kelas lain juga dapat diakses.

package p{
class Super{
    protected def f() {println("f")}
    }
	class Sub extends Super{
	    f()
	}
	class Other{
		(new Super).f() //错误
	}
}

Contoh di atas, Sub jenis akses tidak masalah bagi f, karena f dinyatakan sebagai dilindungi di Super, dan Super Sub adalah subclass. Sebaliknya, lain tidak diperbolehkan akses ke f, karena tidak ada yang lain yang diwarisi dari Super. Sedangkan yang kedua juga diakui di java, karena dengan Sub lain di tas yang sama.


Public anggota (publik)

Scala, jika Anda tidak menentukan pengubah apapun, default adalah publik. anggota tersebut dapat diakses di mana saja.

class Outer {
   class Inner {
      def f() { println("f") }
      class InnerMost {
         f() // 正确
      }
   }
   (new Inner).f() // 正确因为 f() 是 public
}

Lingkup perlindungan

Scala, pengubah akses dapat ditekankan dengan menggunakan kualifikasi. Formatnya adalah:

private[x] 

或 

protected[x]

Di mana x mengacu pada paket milik kelas atau objek tunggal. Jika ditulis dalam [x] pribadi, baca "Selain para anggota [...] atau di kelas [...] kelas dalam paket dan gambar yang terkait terlihat di luar, untuk semua kelas lainnya adalah swasta.

Teknik ini berguna di sejumlah proyek besar dalam paket, yang memungkinkan Anda untuk menentukan beberapa sub-paket dalam proyek pelanggan eksternal terlihat Anda tetapi proyek selalu hal-hal yang tak terlihat.

package bobsrocckets{
    package navigation{
        private[bobsrockets] class Navigator{
         protected[navigation] def useStarChart(){}
         class LegOfJourney{
             private[Navigator] val distance = 100
             }
            private[this] var speed = 200
            }
        }
        package launch{
        import navigation._
        object Vehicle{
        private[launch] val guide = new Navigator
        }
    }
}

Contoh di atas, Navigator kelas ditandai sebagai pribadi [bobsrockets] Itu adalah kelas dari semua kelas dan objek yang terkandung dalam paket bobsrockets terlihat.

Misalnya, dari akses kendaraan ke objek dalam Navigator diizinkan karena objek Kendaraan termasuk dalam peluncuran paket, sedangkan di bobsrockets meluncurkan paket, sebaliknya, semua kode luar bobsrockets paket dapat mengakses kelas Navigator.