C 언어
이 튜토리얼에서는 C++ 프로그래밍의 다양한 상속 모델(예제를 통해 다중, 다중 레벨 및 계층적 상속)에 대해 알아봅니다.
상속은 객체 지향 프로그래밍 언어의 핵심 기능 중 하나입니다. 이를 통해 소프트웨어 개발자는 기존 클래스에서 새 클래스를 파생할 수 있습니다. 파생 클래스는 기본 클래스(기존 클래스)의 기능을 상속합니다.
C++ 프로그래밍에는 다양한 상속 모델이 있습니다.
<시간>C++ 프로그래밍에서는 기본 클래스에서 클래스를 파생시킬 수 있을 뿐만 아니라 파생 클래스에서 클래스를 파생시킬 수도 있습니다. 이러한 형태의 상속을 다단계 상속이라고 합니다.
class A { ... .. ... }; class B: public A { ... .. ... }; class C: public B { ... ... ... };
여기, 클래스 B 기본 클래스 A에서 파생됩니다. 및 클래스 C 파생 클래스 B에서 파생됩니다. .
<시간>
#include <iostream>
using namespace std;
class A {
public:
void display() {
cout<<"Base class content.";
}
};
class B : public A {};
class C : public B {};
int main() {
C obj;
obj.display();
return 0;
}
출력
Base class content.
이 프로그램에서 클래스 C B 클래스에서 파생됨 (기본 클래스 A에서 파생됨 ).
obj C 클래스의 객체 main()
에 정의되어 있습니다. 기능.
display()
함수가 호출됩니다. display()
클래스 A 실행됩니다. display()
이 없기 때문입니다. C 클래스의 함수 및 클래스 B .
컴파일러는 먼저 display()
를 찾습니다. C 클래스의 함수 . 함수가 존재하지 않으므로 B 클래스에서 함수를 찾습니다. (C로 B에서 파생됨 ).
이 함수는 B 클래스에도 존재하지 않습니다. , 그래서 컴파일러는 A 클래스에서 그것을 찾습니다. (B로 A에서 파생됨 ).
display()
인 경우 함수가 C에 있습니다. , 컴파일러는 display()
를 재정의합니다. 클래스 A (멤버 함수 재정의 때문에).
C++ 프로그래밍에서 클래스는 둘 이상의 부모로부터 파생될 수 있습니다. 예를 들어, A 클래스 Bat 기본 클래스 포유류에서 파생됩니다. 및 날개 동물 . 박쥐는 포유류이자 날개 달린 동물이기 때문에 이해가 됩니다.
<그림> <시간>
#include <iostream>
using namespace std;
class Mammal {
public:
Mammal() {
cout << "Mammals can give direct birth." << endl;
}
};
class WingedAnimal {
public:
WingedAnimal() {
cout << "Winged animal can flap." << endl;
}
};
class Bat: public Mammal, public WingedAnimal {};
int main() {
Bat b1;
return 0;
}
출력
Mammals can give direct birth. Winged animal can flap.<시간>
다중 상속의 가장 명백한 문제는 함수 재정의 중에 발생합니다.
두 개의 기본 클래스에 파생 클래스에서 재정의되지 않는 동일한 기능이 있다고 가정합니다.
파생 클래스의 개체를 사용하여 함수를 호출하려고 하면 컴파일러에서 오류를 표시합니다. 컴파일러가 어떤 함수를 호출할지 모르기 때문입니다. 예를 들어,
class base1 {
public:
void someFunction( ) {....}
};
class base2 {
void someFunction( ) {....}
};
class derived : public base1, public base2 {};
int main() {
derived obj;
obj.someFunction() // Error!
}
이 문제는 base1 또는 base2 클래스로 지정할 함수를 지정하는 범위 확인 기능을 사용하여 해결할 수 있습니다.
int main() { obj.base1::someFunction( ); // Function of base1 class is called obj.base2::someFunction(); // Function of base2 class is called. }<시간>
기본 클래스에서 둘 이상의 클래스가 상속되는 경우 이를 계층적 상속이라고 합니다. 계층적 상속에서는 자식 클래스에 공통적으로 있는 모든 기능이 기본 클래스에 포함됩니다.
예를 들어 물리, 화학, 생물학은 과학 수업에서 파생됩니다. 마찬가지로 Dog, Cat, Horse는 Animal 클래스에서 파생됩니다.
<시간>class base_class { ... .. ... } class first_derived_class: public base_class { ... .. ... } class second_derived_class: public base_class { ... .. ... } class third_derived_class: public base_class { ... .. ... }<시간>
// C++ program to demonstrate hierarchical inheritance
#include <iostream>
using namespace std;
// base class
class Animal {
public:
void info() {
cout << "I am an animal." << endl;
}
};
// derived class 1
class Dog : public Animal {
public:
void bark() {
cout << "I am a Dog. Woof woof." << endl;
}
};
// derived class 2
class Cat : public Animal {
public:
void meow() {
cout << "I am a Cat. Meow." << endl;
}
};
int main() {
// Create object of Dog class
Dog dog1;
cout << "Dog Class:" << endl;
dog1.info(); // Parent Class function
dog1.bark();
// Create object of Cat class
Cat cat1;
cout << "\nCat Class:" << endl;
cat1.info(); // Parent Class function
cat1.meow();
return 0;
}
출력
Dog Class: I am an animal. I am a Dog. Woof woof. Cat Class: I am an animal. I am a Cat. Meow.
여기에서 Dog
및 Cat
클래스는 Animal
에서 파생됩니다. 수업. 따라서 두 파생 클래스 모두 info()
에 액세스할 수 있습니다. Animal
에 속하는 함수 수업.
C 언어
C 프로그래밍 언어란 무엇입니까? C는 Dennis Ritchie가 1972년 Bell Lab에서 개발한 중간 수준 프로그래밍 언어입니다. C 언어는 저수준 언어와 고급 언어의 기능을 결합합니다. 따라서 중급 언어로 간주됩니다. C는 펌웨어 및 휴대용 응용 프로그램을 개발할 수 있는 고급 클래식 유형 프로그래밍 언어입니다. C 언어는 시스템 소프트웨어 작성을 목적으로 개발되었습니다. 펌웨어 시스템 개발에 이상적인 언어입니다. C++ 프로그래밍 언어란 무엇입니까? C++는 C 프로그래밍 언어의 기능과 Simula67(첫 번째 객
Python의 OOP Python의 OOP 다른 일반 프로그래밍 언어와 동일하게 객체와 클래스를 사용하는 데 중점을 둔 프로그래밍 접근 방식입니다. 개체는 모든 실제 엔터티가 될 수 있습니다. Python을 사용하면 개발자가 코드 재사용성에 중점을 둔 OOP 접근 방식을 사용하여 애플리케이션을 개발할 수 있습니다. Python에서 클래스와 객체를 만드는 것은 매우 쉽습니다. 수업이란 무엇입니까? Python의 클래스는 데이터와 함수의 논리적 그룹입니다. 임의의 콘텐츠를 포함하고 따라서 쉽게 액세스할 수 있는 데이터 구조를 자유