#include <iostream>
using namespace std;

class X
{
private:
    virtual void internalCall()
    {
        cout << "Class X" << endl;
    }
public:
	X()
	{
		internalCall();
	}
    void externalCall()
    {
        internalCall();
    }
};

class Y : public X
{
protected:
    virtual void internalCall2()
    {
        cout << "Class Y2" << endl;
    }
    virtual void internalCall()
    {
        cout << "Class Y" << endl;
        internalCall2();
    }
	public:
	Y() : X() {}

};

int main()
{
    Y y;

    y.externalCall();

    return 0;
}