>  기사  >  Java  >  자바 객체지향이란 무엇인가

자바 객체지향이란 무엇인가

藏色散人
藏色散人원래의
2019-05-23 17:28:595187검색

자바 객체지향이란 무엇인가

Java 객체지향이란 무엇인가요?

Java 객체지향에 대한 자세한 설명

서문: 저는 오랫동안 프로젝트 개발에 참여했고 최근에 시작했습니다. 이전에 배웠던 기본 사항에 대해 글을 쓰기 위한 아이디어. 처음에 프로그래밍을 배우기 시작했는데, 처음 배우기 시작했을 때 많은 것을 이해하지 못했습니다. 연습, 돌아가서 몇 가지 기본적인 사항을 학습해야만 더 철저하게 이해할 수 있습니다. 셋째, 일부 사항은 기본적이지만 매우 중요하고 수행할 가치가 있습니다.

1. 객체 지향

객체 지향(객체 지향)은 새로운 프로그래밍 방법 또는 새로운 프로그래밍 사양(패러다임)을 사용하는 것입니다. , 캡슐화, 다형성 및 기타 기본 개념을 사용하여 프로그램을 설계합니다. 현실 세계에 객관적으로 존재하는 사물(객체)을 기반으로 소프트웨어 시스템을 구축하고, 시스템 구축에는 인간의 자연스러운 사고를 최대한 활용합니다.

2. 객체

객체는 시스템에서 객관적인 것을 설명하는 데 사용되는 개체입니다. 객체는 속성 집합과 속성 집합에서 작동하는 서비스 집합으로 구성됩니다.

클래스의 인스턴스화는 객체를 생성할 수 있습니다. 객체의 수명 주기는 생성, 사용 및 제거의 세 단계로 구성됩니다.

객체에 대한 참조가 없으면 객체는 쓸모없는 객체가 됩니다. Java의 가비지 컬렉터는 객체의 동적 메모리 영역을 자동으로 스캔하여 참조되지 않는 객체를 수집하여 가비지로 해제합니다. 시스템에 메모리가 부족하거나 System.gc()를 호출하여 가비지 수집이 필요한 경우 가비지 수집 스레드는 시스템과 동기적으로 실행됩니다.

3. 클래스

클래스는 내부적으로 속성과 메서드를 포함하여 클래스에 속하는 모든 개체에 대한 통일된 추상 설명을 제공합니다. 주요 부품. 객체 지향 프로그래밍 언어에서 클래스는 독립적인 프로그램 단위이며 클래스 이름이 있어야 하며 속성과 메서드라는 두 가지 주요 부분을 포함해야 합니다.

Java의 클래스 구현에는 클래스 선언과 클래스 본문이라는 두 부분이 포함됩니다.

클래스 선언

[public][abstract|final] class className [extends superclassName] [implements interfaceNameList]{……}

그 중 public, abstract, final 수식자는 클래스의 속성을 기술하며, className은 클래스 이름, superclassName은 클래스의 상위 클래스 이름입니다. , 그리고 interfaceNameList는 클래스가 인터페이스 목록을 구현하는 것입니다.

Class body

class className{
	[public | protected | private ] [static] [final] [transient] [volatile] type variableName;//成员变量
	[public | protected | private ] [static] [final | abstract] [native] [synchronized] returnType methodName([paramList]) [throws exceptionList]{
		statements
	}//成员方法
}

Member 변수 한정자 의미:

▶ static: 정적 변수(클래스 변수)

▶ final: 상수; 임시 변수, 개체 아카이브에 사용됨, 객체 직렬화에 사용

▶ 휘발성: 동시 스레드 공유에 사용되는 기여 변수

메소드 구현에는 메소드 선언과 메소드 본문이라는 두 부분도 포함됩니다.

메서드 선언

메서드 선언에서 한정자의 의미:

►static: 클래스 이름을 통해 직접 호출할 수 있는 클래스 메서드

►abstract: 추상 메서드, no 메소드 본문

▶ 최종: 메소드를 재정의할 수 없음

▶ 네이티브: 다른 언어의 코드 통합 ​​

▶ 동기화: 여러 동시 스레드로 액세스 제어

메서드 선언에는 메서드 이름, 반환 유형 및 외부 매개변수가 포함됩니다. 매개변수 유형은 단순 데이터 유형이거나 복합 데이터 유형(참조 데이터 유형이라고도 함)일 수 있습니다.
간단한 데이터 유형의 경우 Java는 값 전송을 구현합니다. 메서드는 매개변수 값을 수신하지만 이러한 매개변수의 값을 변경할 수는 없습니다. 매개변수의 값을 변경하려면 참조 데이터 유형을 사용하십시오. 참조 데이터 유형은 메모리의 데이터 주소를 메소드에 전달하고 메소드의 데이터에 대한 조작으로 데이터 값을 변경할 수 있기 때문입니다. .

메서드 본문

메서드 본문은 지역 변수 선언과 모든 합법적인 Java 명령어를 포함하는 메소드의 구현입니다. 메서드 본문에 선언된 지역 변수의 범위는 메서드 내에 있습니다. 지역 변수가 클래스 멤버 변수와 동일한 이름을 갖는 경우 클래스 멤버 변수는 숨겨집니다.

클래스 멤버 변수와 매개변수를 구별하려면 this를 사용해야 합니다. 이는 메소드에서 현재 객체를 참조하는 데 사용되며 해당 값은 메소드를 호출한 객체입니다. 반환 값은 반환 유형과 일치하거나 정확히 동일하거나 그 하위 클래스여야 합니다. 반환 유형이 인터페이스인 경우 반환 값은 인터페이스를 구현해야 합니다.

생성자 방식

▶생성자 방식은 특별한 방식입니다. Java의 모든 클래스에는 해당 클래스의 객체를 초기화하는 생성자 메서드가 있습니다.

▶ 생성자는 클래스 이름과 동일한 이름을 가지며 어떤 데이터 유형도 반환하지 않습니다.

▶ 생성자에서는 오버로딩이 자주 사용됩니다.

▶ 생성자는 새로운 연산자만 호출할 수 있습니다.

4. 기본 객체지향 기능

Encapsulation

캡슐화는 내부를 숨기는 것입니다. 세부 사항 가능한 한 객체를 많이 사용하고 외부 세계와의 경계를 형성하며 외부 세계와 상호 작용할 수 있는 제한된 인터페이스와 방법만 유지합니다. 캡슐화의 원리는 객체 이외의 부분이 객체의 내부 속성에 마음대로 접근하고 조작하는 것을 방지하여 외부 세계가 객체의 내부 속성을 손상시키는 것을 방지하는 것입니다.

클래스 구성원에게 특정 접근 권한을 설정하여 클래스 구성원의 정보를 숨길 수 있습니다.

▶ 비공개: 비공개로 제한된 클래스의 구성원은 해당 클래스 자체에서만 액세스할 수 있습니다. 클래스 생성자가 비공개로 선언되면 다른 클래스는 해당 클래스의 인스턴스를 생성할 수 없습니다.

▶ 기본 : 접근 권한 제한이 없는 클래스의 멤버는 기본(default) 접근 상태에 속하며, 클래스 자체 및 동일한 패키지 내의 클래스에서 접근이 가능합니다.

▶ protected: protected로 제한된 클래스의 멤버는 클래스 자체, 해당 하위 클래스(동일 패키지 및 다른 패키지의 하위 클래스 포함) 및 동일한 패키지의 다른 모든 클래스에서 액세스할 수 있습니다.

▶ 공개: 공개로 제한된 클래스의 구성원은 모든 클래스에서 접근할 수 있습니다.

Inheritance

하위 클래스의 객체는 상위 클래스의 속성과 메서드를 모두 가지는데, 이를 하위 클래스에 의한 상위 클래스 상속이라고 합니다.

▶ Java에서는 상위 클래스가 여러 개의 하위 클래스를 가질 수 있지만 하위 클래스는 하나의 상위 클래스만 상속할 수 있는데 이를 단일 상속이라고 합니다.

▶ 상속을 통해 코드 재사용이 가능해집니다.

▶ 자바의 모든 클래스는 java.lang.Object 클래스를 직간접적으로 상속받아 얻어집니다.

▶ 하위 클래스는 상위 클래스의 비공개 액세스 권한이 있는 멤버 변수 및 메서드를 상속받을 수 없습니다.

▶ 하위 클래스는 상위 클래스의 메서드를 재정의할 수 있습니다. 즉, 상위 클래스와 동일한 이름을 가진 멤버 변수의 이름을 지정할 수 있습니다.

Java에서는 super를 통해 상위 클래스 멤버에 액세스할 수 있으며, super는 현재 객체의 상위 클래스를 참조하는 데 사용됩니다. super가 사용되는 세 가지 상황은 다음과 같습니다.

▶ 다음과 같이 상위 클래스의 숨겨진 멤버 변수에 액세스합니다.

▶ 다음과 같이 상위 클래스에서 재정의된 메서드를 호출합니다. [paramlist ]), super()는 상위 클래스 생성자를 호출합니다.

▶ 상위 클래스 생성자를 호출합니다. 예: super([paramlist]);

다형성

객체의 다형성은 상위 클래스에 정의된 속성이나 메서드가 하위 클래스에 상속된 후 다른 데이터 유형을 가지거나 다른 동작을 표시할 수 있음을 의미합니다. 이를 통해 동일한 속성이나 메서드가 상위 클래스와 다양한 하위 클래스에서 서로 다른 의미를 가질 수 있습니다. 예를 들어, "기하학 그림"의 "드로잉" 방법, "타원" 및 "다각형"은 모두 "기하학 그림"의 하위 클래스이며 해당 "그리기" 방법 기능은 서로 다릅니다.

Java의 다형성은 메소드 오버로딩으로 달성되는 정적 다형성(컴파일 타임 다형성)과 메소드 오버라이딩으로 달성되는 동적 다형성(런타임 다형성)의 두 가지 측면에 반영됩니다.

▶ 컴파일 시간 다형성: 오버로드된 메서드가 호출되는 컴파일 단계에서 컴파일러는 다양한 매개 변수를 기반으로 호출할 해당 메서드를 정적으로 결정합니다.

▶ 런타임 다형성: 하위 클래스는 상위 클래스의 모든 속성(프라이빗 제외)을 상속하므로 하위 클래스 개체를 상위 클래스 개체로 사용할 수 있습니다. 프로그램에서 상위 클래스 객체가 사용될 때마다 하위 클래스 객체가 대신 사용될 수 있습니다. 객체는 하위 클래스의 인스턴스를 참조하여 하위 클래스의 메서드를 호출할 수 있습니다.

오버로딩

▶메서드 오버로딩은 클래스가 다양한 데이터 유형을 통일된 방식으로 처리하는 수단입니다.

▶ 한 클래스에 여러 메서드를 만들 수 있습니다. 이름은 같지만 매개변수와 정의가 다릅니다. 메소드를 호출할 때 전달된 특정 매개변수 수와 유형에 따라 사용할 메소드가 결정됩니다.

▶ 반환값 유형은 같을 수도 있고 다를 수도 있습니다. 반환 유형은 오버로드된 함수를 구별하는 기준으로 사용할 수 없습니다.

Overriding

▶ 하위 클래스는 상위 클래스의 메서드를 다시 작성합니다. 하위 클래스의 메서드가 상위 클래스와 동일한 메서드 이름, 반환 유형 및 매개변수 목록을 갖는 경우 해당 메서드가 재정의되고 있다고 말합니다.

▶ 상위 클래스에서 원래의 메소드가 필요한 경우 현재 클래스의 상위 클래스를 참조하는 super 키워드를 사용하면 됩니다.

▶ 하위 클래스 함수의 접근 수정 권한은 상위 클래스보다 낮을 수 없습니다.

위 내용은 자바 객체지향이란 무엇인가의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.