Οι προσδιοριστές πρόσβασης επιτρέπουν την απόκρυψη της πληροφορίας που είναι από τις βασικές αρχές του αντικειμενοστραφή προγραμματισμού. Με την έννοια “απόκρυψη πληροφορίας” εννοούμε την απόκρυψη της εσωτερικής υλοποίησης της κλάσης.
Σε μία κλάση μπορούν να οριστούν οι προσδιοριστές πρόσβασης public, protected και private. Οι προσδιοριστές πρόσβασης αφορούν τόσο τα πεδία (μεταβλητές) όσο και τις συναρτήσεις (μεθόδους) της κλάσης. Η λειτουργικότητα τους συνοψίζεται στα εξής:
Εάν δεν οριστεί προσδιοριστής πρόσβασης σε μία κλάση τα πεδία και οι μέθοδοι της κλάσης ορίζονται ως private.
Δείτε το παρακάτω παράδειγμα χρήσης των προσδιοριστών πρόσβασης μέσω των κλάσεων Cuboid (κυβοειδές) και Cube (κύβος) που κληρονομεί την κλάση Cuboid.
#include <iostream> using namespace std; class Cuboid { private: int width, height, length; protected: int color; public: int borderWidth; public: Cuboid(int w, int h, int l); void setWidth(int w); void setHeight(int h); void setLength(int l); int getWidth(); int getHeight(); int getLength(); }; Cuboid::Cuboid(int w, int h, int l) { width = w; height = h; length = l; color = 0xffffff; } void Cuboid::setWidth(int w) { width = w; } void Cuboid::setHeight(int h) { height = h; } void Cuboid::setLength(int l) { length = l; } int Cuboid::getWidth() { return width; } int Cuboid::getHeight() { return height; } int Cuboid::getLength() { return length; }
#include <iostream> using namespace std; #include "Cuboid.hpp" class Cube:Cuboid { // Cube extends Cuboid public: Cube(int s, int updatecolor); void setSize(int s); }; Cube::Cube(int s, int updatecolor) : Cuboid(s,s,s) { color = updatecolor; } void Cube::setSize(int s) { setWidth(s); //width = s; // this does not compile setHeight(s); setLength(s); }
Η δήλωση
class Cube:Cuboid {
δηλώνει ότι τη σχέση κληρονομικότητας μεταξύ των κλάσεων Cube και Cuboid (η κλάση Cube είναι απόγονος της κλάσης Cuboid).
#include "Cube.hpp" int main() { Cuboid cuboid(1,2,3); //cuboid.color = 0xFF0000 // this does not compile cuboid.borderWidth = 5; Cube cube(1, 0xcccccc); cuboid.setWidth(5); }
Από το παραπάνω παράδειγμα παρατηρούμε τα εξής: