>  기사  >  Java  >  자바의 객체지향 기능 소개

자바의 객체지향 기능 소개

王林
王林앞으로
2020-02-05 17:54:532272검색

자바의 객체지향 기능 소개

Java 객체 지향의 세 가지 주요 특징:

캡슐화, 상속 및 다형성. 1. 숨겨진 정보에 대한 작동 및 접근을 달성하기 위한 캡슐화 방법.

캡슐화 구현 단계:

속성의 가시성 수정: 비공개로 설정

getter/setter 생성 방법: 속성을 읽고 쓰는 데 사용 getter/setter 메서드에 속성 제어문 추가: 속성 값의 적법성 판단

(권장 학습: #🎜🎜 # javaVideoTutorial

)

속성의 가시성을 수정하려면 private을 사용하세요. 예:

//表示读取该方法中的screen
public float getScreen{
	return screen;
    }
 //有viod无返回值,变量名.属性=值,就不能直接调用可以通过变量名.getScreen()来实现
public viod setScreen(float newScreen){
	screen = newscreen;
	}

변수 이름 속성 = 값은 직접 호출할 수 없지만 호출할 수 있습니다. 변수 이름 .getScreen()을 통해 달성합니다.

패키지 기능:

1. Java 파일 관리

2. name#🎜🎜 #

Define package: packagePackage name 참고: Java 소스 프로그램의 첫 번째 줄에 배치해야 합니다. 패키지 이름은 "."으로 구분할 수 있습니다. 예: com.imooc.MyClassJava , 패키지 명명 규칙은 모두 소문자로 표기됩니다.

Java의 액세스 제어 수정자

public,default,protected,private

public: 공개, 모든 클래스 can access

default: 기본 수정자, 동일한 패키지 내에서 액세스 가능 protected: 보호 유형. 동일한 패키지에 있고 이 클래스를 상속하는 아웃소싱 클래스는

private: 비공개 클래스, 이 클래스만 액세스할 수 있습니다

final, finally, finalize(상속)# 🎜🎜 #

final: 수식어. 이 수정자로 수정된 클래스는 상속될 수 없습니다. 이 수정자로 수정된 변수는 수정될 수 없으며 읽기만 가능합니다. 이 수정자로 수정된 메서드는 사용할 수만 있고 오버로드할 수 있으며 다시 작성할 수 없습니다. 추상 수업.

finally: 예외 포착 후 정리 작업

finalize: 주로 GC가 객체를 삭제하기 전의 메서드로, 먼저 객체에 대해 finalize 메서드를 호출하여 객체가 삭제되었는지 확인합니다. 인용됨

Java의 이 키워드

//原来手动输入
public void setScreen( float newScreen){
   screen = newScreen;
   }
// 用eclips 自动生成的是
public void setScreen( float newScreen){
  this.screen = screen;
  }

this.속성: 현재 개체의 속성을 조작

this.Method: 현재 객체의 메소드 호출

ecilipse는 setter 및 getter 메소드를 직접 생성하고 this 키워드를 추가할 수 있습니다.

이 키워드는 멤버 변수 또는 멤버 메서드 정적 멤버를 호출합니다. This 및 super 키워드는 정적 메서드에서 사용할 수 없습니다. 동시에 클래스에 대한 참조를 반환하고 생성자를 #🎜 호출할 수도 있습니다. 🎜##🎜🎜 #Java의 정적 내부 클래스

정적 내부 클래스는 정적 수정 내부 클래스입니다.

# 🎜🎜#1, 정적 내부 클래스는 외부 클래스의 비정적 멤버에 직접 액세스할 수 없지만 새 외부 클래스() 멤버를 통해 액세스할 수 있습니다.

2. 외부 클래스의 정적 멤버가 내부 클래스의 멤버와 동일한 이름을 갖는 경우 "클래스 이름.정적 멤버"를 통해 외부 클래스의 정적 멤버에 액세스할 수 있습니다. 외부 클래스의 정적 멤버는 내부 클래스의 이름과 동일합니다. 멤버 이름이 다른 경우 "멤버 이름"을 통해 외부 클래스의 정적 멤버를 직접 호출할 수 있습니다.

3. 정적 내부 클래스의 객체를 생성할 때 외부 클래스의 객체가 필요하지 않습니다. 내부 클래스 객체 이름 = 새 내부 클래스();를 직접 생성할 수 있습니다.

2. 상속

상속의 개념 : 클래스 간의 관계입니다.

상속의 이점:

1) 하위 클래스는 상위 클래스의 모든 속성과 메서드를 가집니다(개인 수정은 유효하지 않음)

2) 구현 코드 반복

문법 규칙: 클래스 하위 클래스 확장 상위 클래스 { }

메서드 재정의:

하위 클래스는 상위 클래스의 상속에 만족하지 않으므로 자체 콘텐츠를 다시 작성하고 다시 작성한 후 하위 클래스 메서드 호출에 우선순위를 부여합니다.

문법 규칙:

#🎜🎜 ##🎜🎜 #반환값, 유형, 메소드 이름 매개변수 유형 번호는 재작성을 호출할 상위 클래스 통합 메소드와 동일해야 합니다.

초기화 시퀀스 상속: #🎜 🎜#

# 🎜🎜#상위 클래스 속성 초기화>상위 클래스 생성 방법>하위 클래스 속성 초기화>하위 클래스 생성 방법 0

슈퍼 키워드:

#🎜🎜 #

은 객체 내부에서 사용되며 상위 클래스 객체를 나타낼 수 있습니다.

부모 클래스의 속성에 액세스: super.age;

부모 클래스의 메서드에 액세스: super.eat();

super 적용:

하위 클래스 생성 메서드 중에는 상위 클래스 생성 메서드를 호출해야 합니다.

하위 클래스의 생성자가 상위 클래스의 생성자에 대한 호출을 표시하지 않으면 시스템은 기본적으로 상위 클래스의 인수 없는 생성자를 호출합니다.

생성자가 명시적으로 호출되는 경우 하위 클래스 생성자의 첫 번째 줄에 있어야 합니다.

하위 클래스의 생성자가 부모 클래스를 호출하는 생성자를 표시하지 않고, 부모 클래스에 매개변수가 없는 생성자가 없으면 컴파일 오류가 발생합니다.

Object 클래스:

상속 대상을 식별하지 않는 클래스는 Object 클래스를 상속하는 것과 같습니다.

#🎜🎜 ##🎜 🎜#toString() 메소드:

Object 클래스에 toString() 메소드가 정의되었을 때 반환되는 객체의 해시 코드(객체 주소 문자열)

#🎜 🎜#toString() 메서드를 재정의하여 객체의 속성을 표현할 수 있습니다

equals() 메서드:

비교는 객체 참조가 동일한 메모리 주소를 가리키는지 여부입니다. 참고: 두 개체를 비교할 때는 equals() 메서드를 적용할 수 없습니다. 새 개체가 생성되면 메모리에 새 저장 주소가 생성되므로 개체 속성이 일치하더라도 비교하는 것이 아닙니다. 객체의 특정 속성 값이 동일하려면 반복해야 합니다. equals() 메서드를 작성하세요

getClass()에서 반환된 클래스 객체를 비교하세요.

getClass()가 클래스 객체를 반환합니다. 코드 정보 클래스를 설명하는 것, 클래스의 속성은 무엇인지, 타입은 무엇인지, 변수 이름은 무엇인지, 메소드 이름은 무엇인지 더 관심을 두는 것은 클래스의 코드 정보입니다.

객체 이름을 생성하면 클래스의 객체가 반환됩니다.

객체의 속성 값 정보 또는 객체 데이터의 정보에 중점을 둡니다.

3. 다형성

다형성: 객체를 참조합니다. 다양한 형태는 크게 참조 다형성과 방법 다형성으로 나누어진다.

상속은 다형성의 기초입니다. 자식 클래스와 부모 클래스가 상속 관계를 가져야 한다는 점을 잊지 마세요.

다형성 기능:

1. 부모 클래스 참조는 이 클래스 객체를 가리킬 수 있습니다. = new Animal();

상위 클래스 참조는 하위 클래스 객체 Animal obj2 = new Dog();

그러나 하위 클래스 참조를 사용하여 상위 클래스 객체 Dog obj3 = new Animal();을 지정할 수는 없습니다. //Wrong

2, 메소드 다형성

Animal 클래스에 eat() 메소드를 정의하고 명령문을 출력합니다(동물은 먹을 수 있는 능력이 있습니다). 하위 클래스 Dog에 eat() 메소드를 다시 작성하고 명령문을 출력합니다(개는 먹는다). 고기); 그런 다음 테스트 클래스의 기본 함수에서 obj1.eat()가 사용되면 상위 클래스의 메서드가 호출되고 obj2가 eat() 메서드를 호출하는 경우 하위 클래스의 메서드가 호출됩니다. 호출됩니다.

부모 클래스 Animal을 상속하는 하위 클래스 Cat을 만드는 것과 같은 또 다른 상황이 있지만 Cat은 상속된 eat() 메서드를 재정의하지 않습니다. 그런 다음 테스트 클래스 Animal obj3의 기본 함수에 하위 클래스 개체를 만듭니다. = new Cat(); 그런 다음 obj3.eat()를 호출하면 결과적으로 하위 클래스가 상위 클래스의 메서드를 상속하게 됩니다. (출력 결과: 동물은 먹을 수 있는 능력이 있습니다.)

마지막 특수한 경우에는 다형성 기능을 사용할 수 없습니다. 출력 문(개가 문을 감시할 수 있는 능력이 있음)을 포함하는 고유 메서드 public void watchDoor()를 하위 클래스에 추가하면 In을 테스트합니다. 클래스의 메인 함수(Animal obj2 = new Dog() 객체를 먼저 정의해야 함), obj2.watchDoor()를 사용할 수 없습니다. 즉, 상위 클래스의 참조를 통해 하위 클래스의 메서드를 호출할 수 없습니다.

추천 관련 기사 및 튜토리얼:

Java 입문 튜토리얼

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

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제