객체 지향이란 무엇입니까?
개체 객체, Oriended ... 지향적, 프로그래밍 프로그래밍
객체 지향은 프로그래밍을 위해 객체를 사용하는 것을 의미하며 OOP로 축약합니다.
SP와 OOP의 비교
객체 지향 캡슐화 및 상속 다형성의 세 가지 주요 원리
물체
객체는 객체 지향 프로그래밍의 핵심 부분이며, 명확하게 정의 된 상태와 동작을 가진 실제 특정 엔티티입니다.
객체는 실제로 "데이터"및 "기능"의 캡슐화입니다.
데이터는 "속성"또는 "멤버 데이터"라고도하는 자체 상태를 나타냅니다.
함수는 "메소드"또는 "멤버 함수"라고도하는 자체 함수를 나타냅니다.
친절한
세상을 더 잘 이해하기 위해 사람들은 실생활의 사물 (대상)을 범주로 나눕니다.
같은 범주의 사물에는 항상 공통점이 있습니다.
클래스는 공통된 특성과 행동을 가진 엔티티를 정의합니다.
클래스는 동일한 속성과 동작을 가진 객체 그룹의 모음입니다.
재산
사물의 특성은 클래스의 변수로 표시됩니다.
각 객체의 각 속성에는 특정 값이 있습니다.
속성 이름은 클래스의 모든 객체가 공유합니다.
개체 또는 엔터티가 소유 한 기능은 클래스에 표시 될 때 속성이라고합니다.
방법
사물의 행동과 행동은 클래스의 기능으로 표현됩니다.
각 객체마다 동일한 동작과 행동이 있습니다.
객체에 의해 수행되는 동작은 클래스의 메소드로 표시됩니다.
클래스와 객체의 차이
클래스는 엔티티를 설명하는 데 사용되는 "템플릿"또는 "프로토 타입"입니다.
객체는 실제 엔티티이며 각 객체는 클래스의 구체적인 인스턴스입니다.
클래스는 객체의 모든 속성과 방법을 정의하는 데 사용되며 동일한 클래스의 모든 객체는 동일한 특성과 작업을 갖습니다.
클래스는 제품을 생산하는 곰팡이로 이해 될 수 있으며 물체는이 금형을 기반으로 생산 된 제품입니다.
수업 및 구조
패키지
무언가를 함께 포장하고 새롭고 완전한 형태로 제시하십시오.
숨겨진 속성, 메소드 또는 구현 세부 정보를 처리하는 방법을 캡슐화라고합니다.
캡슐화는 실제로 데이터의 보안 문제를 해결하는 특정 정보를 선택적으로 노출 시키거나 숨기고 있습니다.
상속
상속은 기존 클래스를 재사용하여 새로운 클래스를 생성하는 기능입니다.
평신도의 용어로는 기존 클래스 (즉, 부모 클래스 또는 기본 클래스)에서 새 클래스 (서브 클래스 또는 파생 클래스)를 만드는 과정입니다.
실제로, 상속은 재산 재사용의 목적을 달성 할 수 있지만 Java에서는 상속이 코드 재사용을 만들 수 있습니다.
다형성
다형성은 다른 클래스에서 동일한 함수의 다른 구현을 말합니다.
다형성의 장점은 클래스를보다 유연하고 확장하기가 더 쉽다는 것입니다.
여기서 이야기해야 할 "추상적"도 있습니다.
추상적인
동일하거나 유사한 객체를 동일한 범주로 분류하는 과정은 추상화이므로 추상화는 문제를 분석하는 방법입니다.
추상화의 기본 원리 :
이차 문제가 아니라 주요 문제에만 관심이 있습니다.
이차 모순이 아니라 주요 모순에 대해서만 관심을 갖습니다.
다른 것이 아니라 똑같은 것에 관심을 갖습니다.
문제가 무엇인지, 그리고 무엇을 달성 할 수 있는지에 대해 관심을 가지지 만 그것을 달성하는 방법은 아닙니다.
추상 프로세스는 실제로 객체 지향 프로그래밍의 핵심 아이디어입니다.
Java의 클래스 정의
Java에서 객체를 만듭니다
객체 생성을위한 구문
배열과 유사하게, 객체는 또한 데이터 유형을 참조하고 새 연산자를 사용하여 힙에서 메모리를 할당 할 수 있습니다.
객체 생성을위한 일반 구문 :
클래스 이름 참조 이름 = 새 클래스 이름 ();
이미 정의 된 클래스를 사용하여 해당 클래스에서 객체를 작성하는 프로세스를 "인스턴스"라고합니다.
회원 운영자 "."
클래스의 첫 번째 객체를 인스턴스화 함으로써만 첫 번째 캔 멤버 (속성 및 방법)에 액세스 할 수 있습니다.
회원 운영자 (.)를 사용하여 멤버 속성 또는 멤버 메소드에 액세스하십시오.
일반적인 구문은 다음과 같습니다.
개체 이름. 다음과 같은 멤버 이름
std.age = 18; // 멤버 속성에 값을 할당 std.dining (); // 멤버 메소드를 호출합니다
액세스 권한 : 공공 및 개인
C 언어 구조 구성원은 어디서나 액세스 할 수 있으며, 이는 데이터 보안에 큰 숨겨진 위험을 남길 것입니다.
클래스 외부에서 클래스 멤버에 직접 액세스하여 발생하는 데이터 손상을 피하기 위해 Java는 클래스 멤버에 대한 액세스에 대한 제약 조건을 설정합니다.
공개 및 개인 키워드는 회원이 클래스 외부에서 액세스 할 수 있는지 여부를 나타내는 액세스 수정 자입니다.
공공 수정 구성원은 제한없이 어디서나 액세스 할 수 있습니다.
비공개로 수정 된 회원은이 클래스의 다른 회원 만 액세스 할 수 있으며 수업 외부에서 액세스 할 수 없습니다.
수업 외부에서 개인 회원에게 액세스 할 수 없습니다.
다른 클래스의 개인 구성원도 현재 클래스에서 숨겨져 있습니다.
액세스 권한 예제
클래스 학생 {개인 문자열 이름; // 이름, 개인, 개인, 개인, 개인, 개인, 개인, 개인, 개인, 개인, 개인, 개인, 개인, 직접 클래스에서 직접 액세스 할 수 있습니다. // 웨이트, 사적, 수업 외부에서 직접 액세스하기, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공개, 공개, 공개, 공개, 공개, 공개, 공개, 공개, 공개, 공개, 공개,,,,,,,,,,,,,,,,,,,,,,,, 대중, 공개, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공개, 공개, 공개, 공개, 공개, 공개, 공개, 공개, 공개, 공개,,,,,,,,,,,,,,, 대중, 공개, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공개, 공개, 공개, 공개, 공개, 공개, 공개, 공개, 공개, 공개,,,,,,,,,,,,,,, 대중, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공공, 공개, 공개, 공개, 공개, 공개, 공개, 공개, 공개, 공개, 공개, 공개, 공개, 공개, 공개, 공개, 메소드는 클래스의 내부 멤버이며,이 클래스의 개인 구성원에게 직접 액세스 할 수 있습니다}} public class test {public static void main (String [] args) {Student std = new Student (); // 학생 객체 std.age = 18 인스턴트를 인스턴스화합니다. // 클래스 외부에서 개인 멤버에 액세스하려고 시도하면 std.dining (); // 공개 회원에 대한 액세스 수락}}
액세스 권한 (계속)
액세스 수정자를 추가하면 때때로 데이터를 작동하는 데 불편 함이 발생할 수 있지만 데이터 보안이 크게 보장 될 수 있습니다.
일반적으로, 우리는 회원 속성을 개인 및 회원 방법으로 공개적으로 선언하지만 그렇게하는 것은 절대적인 것은 아닙니다.
때로는 일부 개인 데이터 구성원이 클래스 밖에서 작동해야 할 수도 있으므로 공개 방법을 추가 할 수 있으며이 방법을 사용하여 클래스 외부의 오해로 인한 데이터 손상을 피하기 위해 개인 데이터를 작동 할 수 있습니다.
주요 방법은 클래스 외부의 가상 머신에서 호출해야하므로 기본 방법은 공개적으로 선언해야합니다.
예를 들어 : 학생 수업을 수정하십시오
클래스 학생 {// 학생 클래스 개인 문자열 이름을 정의합니다. // 이름, 개인 개인 정보 연령; // 나이, 개인 개인 플로트 무게; // weight, private public void setName (문자열 이름) {// 이름에 값을 할당하는 방법, public this.name = name; } public void setage (int a) {// 연령에 값을 할당하는 방법, 공용 연령 = a; } public void setweight (float w) {// 값을 가중치에 할당하는 방법, public weight = w; } public void display () {// 모든 정보를 인쇄하는 메소드는 공개적으로 소유 된 System.out.out.println ( "이름 :" + name + ", age :" + age + ", weight :" + weight); } public void dining () {...} // 먹는 메소드, 공개, 코드 약간 공개 void walk () {... ...} // 걸음, 공개, 코드 약간} public class test {public static void main (String [] args) {Student std = new Student (); // 학생 클래스 객체 std.setName ( "Zhang San")을 인스턴스화합니다. // 이름을 할당 std.setage (18); // std.setweight (55) 할당; // std.dining ()를 가중치에 할당; // std.display ()를 먹는 방법을 호출합니다. // 정보 인쇄}} 목표 초기화
위의 예에서는 데이터 구성원에게 값을 하나씩 할당 할 수 있습니다. 객체를 인스턴스화하는 동안 멤버 속성을 초기화하려면 구성 방법을 사용합니다.
생성자는 클래스와 동일한 이름을 가지며 객체가 인스턴스화 될 때 가상 시스템에 의해 자동으로 호출되는 특수 멤버 방법입니다.
참고 : 생성자는 리턴 값 유형이 없으며 반환 값을 가질 수 없습니다.
건축 방법의 예 :
/ *구성 요소 클래스를 정의하고 생성자 메소드 */ 클래스 ConstructorDEMO {/ *생성자, 메소드 이름은 클래스 이름과 정확히 동일하며 반환 값 유형을 지정할 필요가 없으며 반환 값 */ public orpuctordEmo () {System.out.println ( "this is uptructor"); }} /*주요 방법을 수용하는 데 사용되는 테스트 클래스는 일반적으로 주요 메소드를 공개* / 공개 클래스 테스트 { /*메인 메소드, 프로그램 입력* / public static void main (String [] args)으로 포함하는 클래스를 선언합니다. }} // 출력 "이것은 생성자 메소드"입니다. 건축 방법
객체를 인스턴스화하는 동안 생성자 방법이 자동으로 호출되기 때문에 생성자 방법은 일반적으로 데이터 구성원에게 리소스를 할당하거나 데이터 구성원을 초기화하는 데 사용됩니다.
일반적인 건축 방법 :
액세스 권한 클래스 이름 (공식 매개 변수 목록) {
방법 본체
}
생성자는 가상 머신에 의해 호출되므로 생성자는 일반적으로 공개로 정의되어야합니다.
예를 들어 : 학생 수업에 생성자를 추가합니다
클래스 학생 {// 학생 클래스 개인 문자열 이름을 정의합니다. // 이름, 개인 개인 정보 연령; // 나이, 개인 개인 플로트 무게; // 무게, 개인 구성 방법, 전달 된 매개 변수에 따라 데이터 멤버에 값을 할당 공개 학생 (문자열 n, int a, float w) {// 각 데이터 멤버 이름 = n에 초기 값을 할당합니다. 나이 = a; 체중 = w; } public void setName (string n) {...} // 이름, 이름, 공개, 코드 약간 공개 void 설정 (int a) {...} // 값을 연령, 공개, 코드에 약간의 공개 void setweight (float w) {…} // 무게, 대중, 대중, 대중, 코드, 코드, 코드, 코드,… // 먹는 방법, 공개, 코드 약간 공개적으로 void walk () {…} // 걸음, 공개, 코드 약간 공개적으로 공개적으로 공개적으로 공개적으로 공개적으로 공개적으로 공개, 코드 약간 공개 클래스 테스트 {public static void main (String [] args) {// 구성 메소드를 사용하여 데이터 구성원의 초기 값을 지정합니다. std.display (); // 정보 인쇄}}
구조 방법 (계속)
각 객체는 생성 될 때 생성자를 실행해야하며 한 번만 실행할 수 있습니다.
생성자 메소드 호출이 실패하면 객체를 생성 할 수 없습니다.
생성자는 직접 명시 적으로 호출 될 수 없습니다.
생성자가 정의되지 않으면 클래스는 매개 변수없이 기본 생성자를 자동으로 생성하며 아무것도하지 않습니다.
생성자가 명시 적으로 정의되면 기본 생성자가 자동으로 사라집니다. 따라서 두 가지 구조 방법이 일반적으로 정의됩니다. 매개 변수가없고 매개 변수가 없습니다.
요약