Beruflich Dokumente
Kultur Dokumente
(CS2133)
By
Circle Rectangle
-radius: double -width: double
+Circle() -height: double
+Circle(radius: double) +Rectangle()
+Circle(radius: double, color: string, +Rectangle(width: double, height: double)
filled: bool) +Rectangle(width: double, height: double,
+getRadius(): double color: string, filled: bool)
+setRadius(radius: double): void +getWidth(): double
+getArea(): double +setWidth(width: double): void
+getPerimeter(): double +getHeight(): double
+getDiameter(): double +setHeight(height: double): void
+getArea(): double
+getPerimeter(): double
Base Classes and Derived Classes - Example
Syntax
To define a derived class, we use a class derivation list to spe
cify the base class(es). A class derivation list names one or m
ore base classes and has the form:
class derived-class: access-specifier base-class
Where access-specifier is one of public, protected, or private,
and base-class is the name of a previously defined class. If th
e access-specifier is not used, then it is private by default.
Constructor and Destructor Chaining
class Fruit
{
public:
Fruit(int id)
{ }
};
class Apple: public Fruit
{
public:
Apple()
{ }
};
Calling Base Class Constructors
DerivedClass(parameterList): BaseClass()
{ // Perform initialization }
Or
DerivedClass(parameterList): BaseClass(argumentList)
{ // Perform initialization }
Or
DerivedClass(optionalargumentList)
{
BaseClass::BaseClass(optionalargument);
}
No-Arg Constructor in Base Class
Public Inheritance: When deriving a class from a public base class, public
members of the base class become public members of the derived class an
d protected members of the base class become protected members of the
derived class. A base class's private members are never accessible directly fr
om a derived class, but can be accessed through calls to the public and prot
ected members of the base class.
Private Inheritance: When deriving from a private base class, public and p
rotected members of the base class become private members of the derive
d class.
Types of Inheritance specified by Access Specifier
class A {
public: int x;
protected: int y; Public, Private, and
private: int z;
}; Protected Inheritance
class B : public A
{
// x remains public and accessible here
// y remains protected and accessible here
// z remains private and is not accessible here
};
class C : protected A
{
// x becomes protected and accessible here
// y remains protected and accessible here
// z remains private and is not accessible here
};
class D : private A
{
// x becomes private, accessible here but not in subclasses of class D
// y becomes private, accessible here but not in subclasses of class D
// z remains private and is not accessible here
};
Public, Private, Protected Inheritance – Example
class A {
public: int x;
protected: int y;
private: int z;
};
class B : public A{
void display(){ cout<<"x="<<x<<endl; cout<<"y="<<y<<endl;
cout<<"z="<<z<<endl; }
};
class C : protected A{
void display(){ cout<<"x="<<x<<endl; cout<<"y="<<y<<endl;
cout<<"z="<<z<<endl; }
};
class D : private A{
void display(){ cout<<"x="<<x<<endl; cout<<"y="<<y<<endl;
cout<<"z="<<z<<endl; }
};
class E : public D{
void display(){
cout<<"x="<<x<<endl; cout<<"y="<<y<<endl; cout<<"z="<<z<<endl;
}
};
Function Overloading and Function Overriding
class A
{
};
class B
{
};
class C : public A, public B
{
};
Constructor Chaining in Multiple Inheritance
class Base {
public:
Base()
{ cout<<"Base\n"; }
};
class DerivedBaseOne : public Base {
public:
DerivedBaseOne()
{ cout<<"DerivedBaseOne\n"; }
};
class DerivedBaseTwo : public Base {
public:
DerivedBaseTwo()
{ cout<<"DerivedBaseTwo\n"; }
};
class Derived : public DerivedBaseTwo, public DerivedBaseOne
{ };
class C : public A
{
};
class D : public B, public C
{
};