Visibilidad de métodos en Ruby

La visibilidad de métodos en Ruby se refiere a que los métodos de instancia pueden ser públicos, privados o protegidos. Los métodos son públicos de forma predeterminada a menos que se declaren explícitamente como privados o protegidos. La visibilidad del método se usa en Ruby para lograr la abstracción de datos, es decir, mostrar solo la información requerida y ocultar los detalles de fondo.

La visibilidad del método depende de los tres tipos de modificadores de acceso de una clase en Ruby:

  • Modificador de acceso público
  • Modificador de acceso protegido
  • Modificador de acceso privado
  • Modificador de acceso público

    Los métodos de una clase que son públicos se pueden llamar fácilmente desde cualquier parte del programa.
    Ejemplo 1

    # program to illustrate public access modifier
      
    # defining class 
    class Geeks
      
        # methods are public by default     
        def publicMethod1 
            puts "publicMethod1 called!"
        end
      
        # using public keyword 
        public 
          
        def publicMethod2 
            puts "publicMethod2 called!"
        end
          
    end
      
    # creating the object 
    obj = Geeks.new()
      
    # calling methods  
    obj.publicMethod1()
    obj.publicMethod2() 
    

    Producción:

    publicMethod1 called!
    publicMethod2 called!
    

    En el programa anterior, se llaman dos métodos públicos publicMethod1()y publicMethod2()de la clase Geeks.

    Modificador de acceso protegido

    Los métodos de una clase que se declaran protegidos solo pueden ser llamados desde la clase en la que se declara y las clases derivadas de ella.
    Ejemplo :#2

    # program to illustrate protected access modifier 
      
    # super class
    class Parent 
          
        # protected keyword 
        protected 
      # protected method
      # can not be called directly
      def protectedMethod 
            puts "protectedMethod called!"
        end
       
    end
      
    # sub class
    class Geeks < Parent
      
      def publicMethod
        # protected method called in public method
        self.protectedMethod
      end  
      
    end
      
    # creating object  
    obj = Geeks.new
      
    # calling method 
    obj.publicMethod
    

    Producción:

    protectedMethod called!
    

    En el programa anterior, no se puede acceder directamente a la clase protectedMethod()of Parent, por lo que se llama desde la publicMethod()clase derivada Geeks.

    Modificador de acceso privado

    Los métodos de una clase que se declaran privados se llaman solo dentro de la clase, el modificador de acceso privado es el modificador de acceso más seguro.
    Ejemplo :#3

    # program to illustrate private access modifier 
      
    # defining class
    class Geeks
          
        # private keyword 
        private
      # private method
      # can not be called directly
      def privateMethod 
            puts "privateMethod called!"
      end
      # public keyword
      public
      # public method
      def publicMethod
        # private method called in public method
        privateMethod
      end  
      
    end
      
    # creating object  
    obj = Geeks.new
      
    # calling method 
    obj.publicMethod
    

    Producción:

    privateMethod called!
    

    En el programa anterior, el privateMethod()de la Geeksclase no se puede llamar directamente. Por lo que se llama desde el publicMethod()de la clase Geeks.

    Ahora veamos otro programa que demuestra la visibilidad del método.
    Ejemplo :#4

    # program to illustrate Method Visibility 
      
    # super class
    class Parent 
        
      private
      # private method
      def privateMethod
        puts "privateMethod called!"
      end  
      
      protected 
      # protected method
      def protectedMethod 
            puts "protectedMethod called!"
        end
       
      public
        
      # public methods
      def publicMethod1
        puts "publicMethod1 called!"
      end
      def publicMethod2
        # protected method called in public method
        protectedMethod
        # private method called in public method
        privateMethod
      end
      
    end
      
    # sub class
    class Child < Parent
      
      # public method
      def publicMethod3
        # protected method called in public method
        protectedMethod
      end  
      
    end
      
    # creating object  
    obj1 = Parent.new
    obj2 = Child.new
      
    # calling method 
    puts "\nParent methods: \n"
    obj1.publicMethod1
    obj1.publicMethod2
    puts "\nChild methods: \n"
    obj2.publicMethod1
    obj2.publicMethod3
    

    Producción:

    Parent methods: 
    publicMethod1 called!
    protectedMethod called!
    privateMethod called!
    
    Child methods: 
    publicMethod1 called!
    protectedMethod called!

    Publicación traducida automáticamente

    Artículo escrito por riturajsaha y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *