Java Java시작하기 자바 생성자 란 무엇입니까?

자바 생성자 란 무엇입니까?

Nov 12, 2019 am 09:26 AM
java 건설자

자바 생성자 란 무엇입니까?

Constructor는 객체 지향의 멤버입니다. 생성자는 클래스 이름과 동일하며 반환 값 유형을 정의할 필요가 없습니다. 생성자는 생성된 객체를 생성할 때 호출되는 함수로, 생성된 모든 객체는 생성자를 통해 초기화되어야 합니다. 클래스에 정의된 생성자가 없으면 클래스에는 빈 매개변수가 있는 기본 생성자가 있습니다. 지정된 생성자가 클래스에 정의되어 있으면 클래스에 기본 생성자가 없습니다.

우리가 태어날 때 이름을 지어주는 사람도 있지만, 태어나자마자 이미 이름을 지어주는 사람도 있습니다. 그렇다면 Java로 객체가 생성되면 객체에 값을 어떻게 할당합니까?

자바 생성자 란 무엇입니까?

자바 생성자 란 무엇입니까?

1. 생성자의 역할:

생성자의 역할: 객체를 초기화합니다.

그림과 같이:

자바 생성자 란 무엇입니까?

2. 생성자와 일반 함수의 차이점:

(1) 일반 함수는 객체가 가져야 할 함수를 정의하는 데 사용됩니다. 생성자는 함수를 호출하기 전에 개체가 생성될 때 포함해야 하는 일부 콘텐츠를 정의합니다. 즉, 객체의 초기화 내용입니다.

(2) 객체를 초기화하기 위해 객체가 생성될 때 jvm에 의해 생성자가 호출됩니다. 일반적으로 함수는 객체가 생성된 후 객체가 함수를 호출할 때 실행됩니다.

(3) 일반 함수는 객체를 사용하여 여러 번 호출할 수 있으며, 객체가 생성될 때 생성자가 호출됩니다.

(4) 생성자의 함수 이름은 클래스 이름과 동일해야 하지만 일반 함수는 식별자의 명명 규칙만 준수하면 됩니다.

(5) 생성자에는 반환 값 유형이 없습니다.

3. 생성자에서 주의할 사항:

(1) 클래스에 정의된 생성자가 없으면 시스템은 클래스에 빈 매개변수가 있는 생성자를 할당합니다. 이는 클래스의 기본 생성자입니다. 클래스에서 생성자를 사용자 정의하면 기본 생성자가 사라집니다.

참고: javap 명령을 통해 확인할 수 있습니다.

(2) 다양한 초기화를 위해 클래스에 여러 생성자를 정의할 수 있습니다. 하나의 클래스에는 여러 생성자가 존재하며 오버로딩 형태로 구현됩니다. 생성자의 이름이 모두 동일하기 때문입니다.

class Perosn{
private int id;
private String name;
private int age;
public Perosn(){
cry();
}
public Perosn(int id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public void cry(){
System.out.println("哇哇哇....");
}
}

질문: 모든 아이는 태어날 때 울어야 합니다. 이 코드에는 두 개의 생성자가 있습니다. 모든 아이가 태어날 때 울어야 한다면, 다른 생성자에서 cry() 함수를 호출해야 합니다. 코드 중복 문제가 발생하는데 어떻게 해결하나요? 코드 블록을 구성합니다.

4. 구성 코드 블록:

구성 코드 블록의 기능: 모든 개체를 균일하게 초기화합니다.

class Perosn{
private int id;
private String name;
private int age;
{
cry();// 每个Person对象创建出来都会执行这里的代码
}
public Perosn(){
cry();
}
public Perosn(int id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public void cry(){
System.out.println("哇哇哇....");
}
}

특정 기능:

1: 개체를 초기화합니다. 객체가 생성되자마자 실행되며 생성자보다 우선합니다.

2: 생성자와의 차이점

(1) 생성 코드 블록과 생성자 함수의 차이점은 생성 코드 블록이 모든 개체를 균일하게 초기화하고 생성자 함수가 해당 개체를 초기화한다는 것입니다.

(2) 구성 코드 블록의 기능: 모든 구성 방법에서 공통 정보를 추출하는 기능입니다.

예를 들어, 아이는 태어나면 울 것입니다

코드는 다음과 같습니다:

class Boy {
 
String name;
int age;
String gender;
     // 构造代码块,给所有对象进行初始化。
{
System.out.println("哭。。。");
}
     
Boy() {
System.out.println("无参构造");
}
 
Boy(String n, int a, String g) {
name = n;
age = a;
gender = g;
System.out.println("有参构造");
}
 
void run() {
System.out.println("跑...");
}
 
}
 
class Demo9 {
 
public static void main(String[] args) {
 
System.out.println();
Boy b = new Boy();
 
Boy b2 = new Boy("jack", 1, "男");
 
}
}

php 중국 웹사이트, 다수의 무료 Java 입문 튜토리얼, 온라인 학습을 환영합니다!

위 내용은 자바 생성자 란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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

핫 AI 도구

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제

Edge PDF 뷰어가 작동하지 않습니다 Edge PDF 뷰어가 작동하지 않습니다 Aug 07, 2025 pm 04:36 PM

TestHepdFinanotherAppTodeMineifTheissueiswithTheFileoredge.2

복잡한 데이터 구조에 대한 중첩 Foreach 루프 최적화 복잡한 데이터 구조에 대한 중첩 Foreach 루프 최적화 Aug 06, 2025 pm 12:53 PM

중첩 된 Foreach 루프를 최적화하려면 먼저 중복 반복을 피해야하며 시간 복잡성을 O (n × M)에서 O (N M)로 감소시킬 수 있습니다. 둘째, 구조가 진정으로 계층 적이 아닌 경우 SelectMany와 같은 방법을 사용하여 데이터를 평평하게해야합니다. 셋째, 조건부 판단을 통해 미리 뛰어 다니거나 불필요한 처리를 건너 뛰십시오. 넷째, 검색 효율을 향상시키기 위해 사전 또는 해시 세트와 같은 적절한 데이터 구조를 선택하십시오. 다섯째, 작업이 독립적이고 시간이 많이 걸릴 때 평행을 사용하여 사용할 수 있습니다. 여섯째, 복잡한 논리를 독립적 인 방법 또는 쿼리로 추출하여 가독성과 유지 가능성을 향상시킵니다. 최적화의 핵심은 복잡성을 줄이고 데이터를 합리적으로 구성하며 항상 중첩의 필요성을 평가하고 궁극적으로 효율적이고 명확하며 확장 가능한 코드를 달성하는 것입니다.

Docker와 함께 Kubernetes에 Java 응용 프로그램을 배포합니다 Docker와 함께 Kubernetes에 Java 응용 프로그램을 배포합니다 Aug 08, 2025 pm 02:45 PM

컨테이너화 된 Java 응용 프로그램 : Dockerfile 생성, Eclipse-Temurin : 17-Jre-Alpine과 같은 기본 이미지를 사용하고 JAR 파일을 복사하고 시작 명령을 정의하고 DockerBuild를 통해 이미지를 빌드하고 Dockerrun과 함께 로컬로 실행하십시오. 2. 이미지를 컨테이너 레지스트리로 푸시하십시오. Dockertag를 사용하여 이미지를 표시하고 DockerHub 및 기타 레지스트리로 푸시하십시오. 먼저 dockerlogin에 로그인해야합니다. 3. Kubernetes에 배포 : 쓰기 배포 .yaml 배포를 정의하려면 복제본, 컨테이너 이미지 및 리소스 제한 수를 설정하고 Service.yaml을 작성하여 작성하십시오.

Java에서 간단한 TCP 클라이언트를 구현하는 방법은 무엇입니까? Java에서 간단한 TCP 클라이언트를 구현하는 방법은 무엇입니까? Aug 08, 2025 pm 03:56 PM

importjava.ioandjava.net.socketfori/oandsocketcommunication.2.createOcketObjectToConnectToThEserUsingHostNameAndport.3.usepritWriterTerndAviaOutputStreamandBufferEdERDERDERDEREADSERVERRSPONSSFROMINPUTSTREAM.4.USTERTRETOR-resto-restocoUtomati

Explorer 패널에 중점을 둔 코드 바로 가기 Explorer 패널에 중점을 둔 코드 바로 가기 Aug 08, 2025 am 04:00 AM

VSCODE에서는 바로 가기 키를 통해 패널과 편집 영역을 빠르게 전환 할 수 있습니다. 왼쪽 탐색기 패널로 이동하려면 Ctrl Shift E (Windows/Linux) 또는 CMD Shift E (Mac)를 사용하십시오. ctrl` 또는 esc 또는 ctrl 1 ~ 9를 사용하려면 편집 영역으로 돌아갑니다. 마우스 작동과 비교할 때 키보드 단축키는 더 효율적이며 인코딩 리듬을 방해하지 않습니다. 다른 팁으로는 다음과 같습니다.

Java에서 준비된 진술을 실행하는 방법은 무엇입니까? Java에서 준비된 진술을 실행하는 방법은 무엇입니까? Aug 06, 2025 pm 04:04 PM

JDBC 드라이버를로드하고 데이터베이스 연결을 설정하십시오. 2. Connection.preparestatement ()를 사용하여 자리 표시자가 포함 된 SQL 문을 만듭니다. 3. 1에서 매개 변수 값을 설정하기위한 setString (), setInt () 및 기타 메소드; 4. SQL 유형에 따라 진술을 실행하여 executeUpdate (), executeQuery () 또는 execute ()를 호출합니다. 5. Try-With-resources를 사용하여 메모리 누출을 방지하고 데이터베이스 작업의 안전하고 효율적인 처리를 보장하기 위해 연결, 준비 및 결과 세트 리소스를 자동으로 닫으십시오.

Java 응용 프로그램에서 공통 메모리 누출 해결 Java 응용 프로그램에서 공통 메모리 누출 해결 Aug 06, 2025 am 09:47 AM

정적 필드 홀딩 로브 션 (staticfield sholdingobjectreferences)은 ventgarbagecollection; useweakhashmaporcleanupmechanisms.2.unclosesourceslikestreamsorconnectioncauseleaks; Alwaysetry-with-resources.non-staticinnerclassestainouterclassreferences; makethemoravoi

자바에서 조롱하는 데 모키토를 사용하는 방법은 무엇입니까? 자바에서 조롱하는 데 모키토를 사용하는 방법은 무엇입니까? Aug 07, 2025 am 06:32 AM

Java 장치 테스트에 Mockito를 효과적으로 사용하려면 먼저 Mockito 의존성을 추가하고 Maven 프로젝트에 Mockito-Core 의존성을 추가하고 증언을 추가해야합니다. 그런 다음 @Mock 주석 (@extendwith (mockitoextension.class)와 결합) 또는 mock () 메소드를 통해 모의 개체를 만듭니다. 그런 다음 (...)를 사용하여 (...) 및 기타 메소드를 사용하여 Mock Object의 메소드 동작을 스터브하거나 다른 구성을 구성 할 수 있습니다.

See all articles