OOP의 세 가지 특징: 캡슐화
OOP 언어의 세 가지 주요 기능.
머리말:
(이 섹션을 XD 소개로 건너뛸 수 있습니다.)
좋아, Java와 cpp는 내가 학교에서 배우는 언어이지만 이번 여름에 교수로부터 C에 대한 경험이 "더 좋았다"는 이메일을 받았습니다. 어머나)
그리고 우리는 이 두 언어가 객체 지향 프로그래밍 언어라는 것을 알고 있습니다. 따라서 절차 지향 언어(C와 같이 지금까지 배운 것)와 다른 세 가지 기능이 있습니다.
이 세 가지 기능은 많은 컴포지션의 인터뷰에서 발생률이 높기 때문에 내 지식을 요약하기로 결정합니다.
이 블로그는 JAVA 언어를 기반으로 하며 모든 OOP 언어 간에 여전히 차이가 있음을 알아야 합니다. 그리고 이 블로그에서는 "나의 단어"와 내 생각을 사용하여 그것이 무엇인지, 왜 존재하는지, 어떻게 사용하는지 설명하려고 합니다. 제 블로그에 잘못된 부분이 있으면 수정 부탁드립니다. 고맙습니다!
소개
캡슐화: 무엇을 왜 어떻게
1. 정의(무엇):
동일한 기능을 가지고 있거나 같은 클래스에 속하는 개체를 함께 넣고 잘 포장하십시오.
아시다시피 회사에는 다양한 관리자나 감독자가 이끄는 부서가 많이 있습니다. 예를 들어
IT_Department
클래스와 HR_Department
클래스가 있습니다.class HR_Department{
private String Manager;
private String[] Dep_Members;
HR_Department(String manager_name){// constructor of HR_Dep
Manager = manager_name;
}
private void employ(){
System.out.println("Our company need to employ a new employee.");
}
private void dismissal(){
System.out.println("We decide to dismissal someone...");
}
}
class IT_Department{
private String Manager;
private String[] Dep_Members;
IT_Department(String manager_name){// constructor of IT_Dep
Manager = manager_name;
}
private void Access_Database(){
System.out.println("Our IT Department can access database of our company.");
}
private void Power_outage(){
System.out.println("IT Department decide to shut down the power for fixing problems.");
}
}
class Google_Inc{
private IT_Department it_Dep;
private HR_Department hr_Dep;
Google_Inc(String IT_Manager_Name,String HR_Manager_Name){// constructor of Google_Inc
it_Dep = new IT_Department(IT_Manager_Name);
hr_Dep = new HR_Department(HR_Manager_Name);
System.out.println("Google Inc is established successfully!");
}
}
public class Test {
public static void main(String[] args) {
// set up a company call newGoogle_Inc XD
Google_Inc google_Inc = new Google_Inc("Jack", "Rose");
}
}
당신이 이 회사의 CEO라면 이러한 다양한 부서를 관리하는 데 도움을 줄 몇 명의 관리자를 고용해야 하며 물론 모든 부서가 완벽한 순서로 작업하고 서로를 도와야 합니다.
.
2. 중요성(이유):
어떤 클래스의 모든 데이터에 액세스할 수 없다면 이 시나리오가 얼마나 엉망이 될지 쉽게 상상할 수 있습니다.
HR 직원이 IT 부서에 확인하지 않고 전원을 끄면 참을 수 없을 것입니다. (심지어 나는 어떤 회사에서도 일하지 않습니다 XD) 그것은 위험하고 어디에서나 선을 넘습니다.
따라서 Encapsulation의 존재는 지금 그 중요성을 보여줍니다. 회사의 예는 모든 프로그램, 코드, 데이터 관리에도 적합합니다. 프로그램을 설계한 후 일부 사용자가 데이터에 액세스하여 편집할 수 있는 것은 위험합니다.
따라서 Java의 경우 일반적으로 Permission Modifier를 사용하여 CLASS(데이터)를 잘 "패킹"합니다.
1.
public
2. protected
(기본값)3.
private
(이전 코드 블록에서 볼 수 있듯이 클래스 및 변수를 수정하는 데 가장 많이 사용됨)분명히, 당신은 그것을 올바르게 사용한다면 그것을 깨달을 수 있습니다.
권한 수정자를 사용하면 코드의 이점을 실현할 수 있습니다.
1. 중요한 변수(vars) 또는 함수(funcs) 분리
2. vars 또는 funcs에 편리하게 액세스
3.중요도 높이기
4. 보안 강화
물론 이러한 이점으로 인해 코드에 액세스하기가 훨씬 더 어려워지고 액세스하는 데 더 많은 단계를 소비하게 됩니다.
3. 캡슐화 구현(HOW):
사용하기 전에 액세스할 수 있는 다양한 수정된 var 또는 func의 범위를 알아야 합니다.
수정하다
같은 클래스
동일한 패키지
하위 클래스
모든 수업
사적인
예
기본
예
예
예
보호
예
예
예
공공의
예
예
예
예
어떤 면에서
protected
는 기본값과 같습니다.예: 할당
=
으로 직접 HR 부서의 관리자 이름에 액세스할 수 없습니다.따라서 "Getters"및 "Setters"라는 함수를 설정해야 합니다.
class IT_Department{
private String Manager;
private String[] Dep_Members;
IT_Department(String manager_name){// constructor of IT_Dep
Manager = manager_name;
}
String getManager(){ // a classic getter function
//return manager's name
return Manager;
}
void setManager(String name){// a classic setter function
//set name to manager's name
this.Manager = name;
}
private void Access_Database(){
System.out.println("Our IT Department can access database of our company.");
}
private void Power_outage(){
System.out.println("IT Department decide to shut down the power for fixing problems.");
}
}
따라서 캡슐화 구현이 코드에서 추상적임을 알 수 있습니다. 우리는 캡슐화를 현상 또는 기능이라고 부르는 것을 선호합니다. 명확하고 엄격한 코드 프레임이 있으면 코드가 매우 좋고 편안해 보입니다.
주요 기능:
public static void main(String[] args) {
// set up a company call newGoogle_Inc
Google_Inc google_Inc = new Google_Inc("Jack", "Rose");
String name = google_Inc.it_Dep.getManager(); // assign "Jack" to name.
google_Inc.it_Dep.setManager("Ben");// assign "Ben" to IT Department's manager
}
여러분의 조언과 댓글은 제가 앞으로 나아가는 힘입니다. 읽어주셔서 감사합니다.
자신을 밀어붙이지 않으면 얼마나 잘 될지 결코 알 수 없습니다.
리키 루안:
이메일: [email protected]
Reference
이 문제에 관하여(OOP의 세 가지 특징: 캡슐화), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/divide_r_conquer/3-main-characteristics-of-java-oop-language-class-2237텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)