Private Public

Private Public



🔞 ALL INFORMATION CLICK HERE 👈🏻👈🏻👈🏻

































Private Public


guadalupewcyokapi

Uncategorized



May 9, 2012 October 8, 2012

2 Minutes
 После изучения модификаторов доступа внутри класса и простого наследования нужно понять принципы модификаторов доступа при наследовании. Многим людям легко запутаться что где есть. Чтобы как-то рассредоточить эту кашу, проще сначала понять что это за модификаторы доступа такие C++ для начинающих private, public, protected , а потом перейти к изучению модификаторов доступа при наследовании.
 Я обычно не делал картинок и насыщал этот блог исключительно текстом, но тут с картинкой проще объяснить
Описаны три класса. На основе класса A строится класс B . На основе построенного класса B строится класс C Под пальцем показано как компилятором воспринимается код. В классе-потомке создаются такие же поля как и в классе-родителе, но они соответствуют только тому классу, в котором созданы
 При наследовании public в класс-потомок передаются все поля в таком виде в котором они записаны в родителе. private поле тоже туда передается, но как я писал в статье C++ для начинающих Знакомство с protected (модификатор доступа внутри класса) ,  передается, но наследник ничего с ней сделать не может
          void update () //Открытая для программы функция
              x=100; //хотя private унаследован, в потомке он только ест память. Будет ошибка
             y = 100 ; // y из класса B стало равным 100
             z = 100 ; // z из класса B стало равным 100
 class C :public B // Класс С является классом-потомком на основе класса B
          void update () //Открытая для программы функция
              x=100; //хотя private унаследован, в потомке он только ест память. Будет ошибка
             y = 100 ; // y из класса C стало равным 100
             z = 100 ; // z из класса C стало равным 100
 Таким образом, используя public наследование  мы передаем потомкам всё что есть в основном классе в таком виде, как и записано в основном классе. Поулучаем клон основного класса. Разница в том что элементы основного класса к элементам своего клона отношения не имеют
      x=100; //хотя private унаследован, в потомке он только ест память. Будет ошибка
 class C :public B //Пытаемся создать потомок созданного класса B
       x=300 ; //Нельзя обратиться к private элементу унаследованному от родителя
       y=300 ; //Нельзя обратиться к private элементу унаследованному от родителя
       z=300 ; //Нельзя обратиться к private элементу унаследованному от родителя
Таким образом, используя private наследование можно создать первого потомка от которого дальнейшее наследование будет бессмысленно . Если первый потомок получает возможность работы с некоторыми элементами, переданными по механизму наследования, то потомки первого потомка таких возможностей не получают. Кроме того, потомки первого потомка даже лишены возможности узнавать кто их первый родитель. Предполагается, что потомки класса B не должны даже знать о существовании класса A (либо потомков класса B вообще не должно быть). (примечание: Под первым потомком подразумевается потомок первого уровня. Таких потомков может быть сколько угодно)
     x=999; //Нельзя обратиться к private элементу унаследованному от родителя
     y = 999 ; // y определился как объявленный в protected внутри класса B
     z = 999 ; // z  определился как объявленный в protected внутри класса B
      x=777; //Нельзя обратиться к private элементу унаследованному от родителя
      y = 777 ; // y определился как объявленный в protected внутри класса C
      z = 777 ; // z   определился как объявленный в protected внутри класса C
 Таким образом, используя protected наследование, программист предполагает, что внутри всех потомков и потомков потомков и потомков потомков потомков будут использоваться только такие элементы, передаваемые механизмом наследования, которые будут защищены от внешнего воздействия извне своих классов .

Published
May 9, 2012 October 8, 2012




Privacy & Cookies: This site uses cookies. By continuing to use this website, you agree to their use.
To find out more, including how to control cookies, see here:

Cookie Policy


      y = 200 ; // y определился как объявленный в private внутри класса B       z = 200 ; // z   определился как объявленный в private внутри класса B
Очень хорошая статья. Автору большое спасибо

PHP: Область видимости - Manual
C++ для начинающих private , public , protected как модификаторы для...
public , private and protected Access Modifiers in Python
Public , Protected and Private Inheritance in C++ Programming
What is private , public and protected in Java? - Quora



Python Tutorials


Python - Get Started


What is Python?


Where to use Python?


Python Version History


Install Python


Python - Shell/REPL


Python - IDLE


Python - IDEs



Python - Syntax




Python - Keywords


Python - Variables


Python - Data Types




Number


String


List


Tuple


Set


Dictionary





Python - Operators


Python - if, elif, else


Python - While Loop


Python - For Loop





Python - Function




Lambda Function





Python - Variable Scope


Python - Module




Module Attributes




Python - Packages


Python - PIP


Python - __main__


Python - Built-in Modules




OS Module


Sys Module


Math Module


Statistics Module


Collections Module


Random Module






Python - Generator Function




Python - List Comprehension



Python - Recursion



Python - Errors


Python - Exception Handling


Python - Assert


Python - Class




private and protected


@property Decorator


@classmethod Decorator


@staticmethod Decorator


Inheritance




Python - Magic Methods


Python - Database CRUD


Python - File I/O


Python - Regex


Python - Tkinter UI




Python - Course & Books


Python API Methods


Python Built-in Methods


Python String Methods



Python List Methods


Python Set Methods


Python Dictionary Methods




class Student :
schoolName = 'XYZ School' # class attribute

def __init__ ( self , name , age ) :
self . name = name # instance attribute
self . age = age # instance attribute


>> > std = Student ( "Steve" , 25 )
>> > std . schoolName
'XYZ School'
>> > std . name
'Steve'
>> > std . age = 20
>> > std . age
25


class Student :
_schoolName = 'XYZ School' # protected class attribute

def __init__ ( self , name , age ) :
self . _name = name # protected instance attribute
self . _age = age # protected instance attribute



>> > std = Student ( "Swati" , 25 )
>> > std . _name
'Swati'
>> > std . _name = 'Dipa'
>> > std . _name
'Dipa'


class Student :
__schoolName = 'XYZ School' # private class attribute

def __init__ ( self , name , age ) :
self . __name = name # private instance attribute
self . __salary = age # private instance attribute
def __display ( self ) : # private method
print ( 'This is private method.' )



>> > std = Student ( "Bill" , 25 )
>> > std . __schoolName
AttributeError : 'Student' object has no attribute '__schoolName'
>> > std . __name
AttributeError : 'Student' object has no attribute '__name'
>> > std . __display ( )
AttributeError : 'Student' object has no attribute '__display'


>> > std = Student ( "Bill" , 25 )
>> > std . _Student__name
'Bill'
>> > std . _Student__name = 'Steve'
>> > std . _Student__name
'Steve'
>> > std . _Student__display ( )
'This is private method.'




Share

Tweet
Share
Whatsapp




ASP.NET Core
ASP.NET MVC
IoC
Web API
C#
LINQ

Entity Framework





AngularJS 1
Node.js
D3.js
JavaScript
jQuery
Sass
Https




HOME
PRIVACY POLICY
TERMS OF USE
ADVERTISE WITH US



2020 TutorialsTeacher.com. All Rights Reserved.


Classical object-oriented languages, such as C++ and Java, control the access to class resources by public, private, and protected keywords. Private members of the class are denied access from the environment outside the class. They can be handled only from within the class.


Public members (generally methods declared in a class) are accessible from outside the class. The object of the same class is required to invoke a public method.
This arrangement of private instance variables and public methods ensures the principle of data encapsulation.


All members in a Python class are public by default. Any member can be accessed from outside the class environment.

You can access the Student class's attributes and also modify their values, as shown below.

Protected members of a class are accessible from within the class and are also available to its sub-classes.
No other environment is permitted access to it. This enables specific resources of the parent class to be inherited by the child class.


Python's convention to make an instance variable protected is to add a prefix _ (single underscore) to it.
This effectively prevents it from being accessed unless it is from within a sub-class.


In fact, this doesn't prevent instance variables from accessing or modifying the instance. You can still perform the following operations:


Hence, the responsible programmer would refrain from accessing and modifying instance variables prefixed with _ from outside its class.


Python doesn't have any mechanism that effectively restricts access to any instance variable or method. Python prescribes a convention of prefixing the name of the variable/method with a single or double underscore to emulate the behavior of protected and private access specifiers.


The double underscore __ prefixed to a variable makes it private .
It gives a strong suggestion not to touch it from outside the class. Any attempt to do so will result in an AttributeError:


Python performs name mangling of private variables. Every member with a double underscore will be changed to _object._class__variable . So, it can still be accessed from outside the class, but the practice should be refrained.

Thus, Python provides conceptual implementation of public, protected, and private access modifiers, but not like other languages like C# , Java, C++.

TutorialsTeacher.com is optimized for learning web technologies step by step.
Examples might be simplified to improve reading and basic understanding.
While using this site, you agree to have read and accepted our terms
of use and privacy policy .


Subscribe to TutorialsTeacher email list and get latest updates, tips &
tricks on C#, .Net, JavaScript, jQuery, AngularJS, Node.js to your inbox.


Big Outdoor Anal
Granny Videos Russian
May Overwatch
Overwatch Training
Mom Lingerie Son

Report Page