Latest web development tutorials

سكالا معدل وصول

سكالا وجافا معدلات الوصول، مثل الأساسية، على التوالي: القطاع الخاص، وحمايتها، جمهور.

إذا لم تقم بتحديد طابع معدل الوصول، افتراضيا، الكائنات سكالا مستوى الوصول علنية.

تصفيات سكالا في أكثر صرامة من جاوة، في حالة من فئة متداخلة، لا يمكن حتى أن تتداخل الطبقة الخارجية وصول الطبقة أعضاء الخاص الخاص.


خاص (خاص) عضوا

مع تعديل الكلمة خاصة، وأعضاء مع هذه العلامة يحتوي فقط على عضو الفئة أو كائن تعريف الداخلي وضوحا، وينطبق نفس القاعدة أيضا إلى الطبقات الداخلية.

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

(نيو الداخلية). F. () وصول ليست قانونية في الداخلية لأن يتم التصريح و أنها خاصة، ولكن وصول ليست ضمن فئة الداخلية.

و وصول ولكن ليس هناك مشكلة في أعمق، ليتم تضمين هذه الزيارة في الطبقة الداخلية.

يسمح جافا الوصول إلى كل، لأنه يتيح الوصول الطبقة أعضاء الخاص الخارجي من الطبقات الداخلية.


حماية (المحمية) أعضاء

في سكالا، وحماية وصول (المحمية) الأعضاء هم أكثر صرامة من جافا. لأنه يسمح فقط يتم تعريف حماية أفراد فئة فرعية في عضو من الطبقة يتم الوصول إليها. في جافا، استخدم الكلمة أعضاء المعدلة المحمية، بالإضافة إلى تعريف فئة فرعية من الفئة يمكن الوصول إلى الأعضاء، مع ويمكن أيضا مجموعة من الطبقات الأخرى يمكن الوصول إليها.

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

في المثال أعلاه، نوع فرعي من الوصول ليست مشكلة لو، لأن يتم التصريح و كما المحمية في السوبر، والسوبر الفرعية هو فئة فرعية. في المقابل، لا يسمح أخرى الوصول إلى و، لأنه لا يوجد غيرها الموروثة من السوبر. في حين أن الأخيرة أيضا الاعتراف بها في جافا، لأنه مع الفرعية الأخرى في نفس الحقيبة.


العام أعضاء (العامة)

سكالا، إذا لم تقم بتحديد أي معدلات، الافتراضي هو الجمهور. لهذا العضو يمكن الوصول إلى أي مكان.

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

نطاق الحماية

سكالا، ومعدل وصول يمكن التأكيد باستخدام التصفيات. والشكل هو:

private[x] 

或 

protected[x]

حيث يشير السينية لمجموعة تنتمي إلى فئة أو الكائن المفرد. لو كانت مكتوبة في القطاع الخاص [س]، وقراءة "بالإضافة إلى أعضاء من [...] أو في الصف [...] من الفئات في حزم وصورة المرتبطة بها مرئية من الخارج، لجميع الفئات الأخرى تكون خاصة.

هذه التقنية مفيدة في عدد من المشاريع الكبيرة في الحزمة، والذي يسمح لك لتحديد عدة الفرعية حزمة في مشروع العملاء الخارجيين المرئي الخاص بك ولكن المشروع دائما أشياء غير مرئية.

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
        }
    }
}

في المثال أعلاه، يتم وضع علامة المستكشف الطبقة أنه خاص [bobsrockets] وهذا هو فئة من جميع الفئات والكائنات الواردة في حزمة bobsrockets مرئية.

على سبيل المثال، من وصول السيارة إلى كائن في المستكشف يسمح لمركبة الكائن المدرجة في إطلاق حزمة، في حين أنه في bobsrockets إطلاق حزمة، على العكس من ذلك، كافة التعليمات البرمجية خارج bobsrockets الحزمة يمكن الوصول إلى الطبقة المستكشف.