저는 Java를 좋아하는 사람으로서 이 문서를 특별히 요약하여 공유함으로써 모든 사람에게 도움이 되기를 바랍니다. 읽고 난 후에도 여전히 불분명한 객체와 클래스가 있습니까? 여기서 개체는 여자 친구를 찾는 것이 아니라 상태와 동작을 포함하는 클래스의 인스턴스이며 클래스는 개체 유형의 동작과 상태를 설명하는 템플릿입니다.
Java 개체 및 클래스
Java는 개체 지향 언어입니다. 다음 기본 개념을 지원합니다.
Polymorphism
Inheritance
Encapsulation
Abstract
Class
Object
-
Instance
Method
오버로딩
이 섹션에서는 객체와 클래스의 개념에 중점을 둡니다.
Object: 객체는 클래스의 인스턴스이며(객체는 여자친구를 찾는 것이 아닙니다) 상태와 동작을 갖습니다. 예를 들어, 개는 개체입니다. 상태에는 색깔, 이름, 행동이 포함됩니다. 꼬리 흔들기, 짖기, 먹기 등.
Class: 클래스는 객체 유형의 동작과 상태를 설명하는 템플릿입니다.
아래 그림에서 남자아이와 여자아이는 클래스이고 각 특정 사람은 클래스의 객체입니다.
Objects in Java
이제 객체가 무엇인지 자세히 살펴보겠습니다. 주변의 현실 세계를 살펴보면 자동차, 개, 사람 등 주변에 많은 물체가 있다는 것을 알 수 있습니다. 이러한 모든 개체에는 고유한 상태와 동작이 있습니다.
개의 상태에는 이름, 품종, 색깔이 포함됩니다. 짖는 소리, 꼬리 흔들기, 달리기 등이 있습니다.
실제 개체와 소프트웨어 개체를 비교하면 매우 유사합니다.
소프트웨어 객체에도 상태와 동작이 있습니다. 소프트웨어 개체의 상태는 해당 속성이며 해당 동작은 메서드를 통해 반영됩니다.
소프트웨어 개발에서 메소드는 객체의 내부 상태 변화에 따라 작동하며, 객체 간의 상호 호출도 메소드를 통해 완성됩니다.
Java의 클래스
클래스는 Java 객체를 생성하기 위한 템플릿으로 볼 수 있습니다.
다음의 간단한 클래스를 통해 Java의 클래스 정의를 이해하세요.
public class Dog{ String breed; int age; String color; void barking(){ } void hungry(){ } void sleeping(){ } }
클래스에는 다음과 같은 유형의 변수가 포함될 수 있습니다.
로컬 변수: 메소드, 생성자 또는 명령문 블록에 정의된 변수를 로컬이라고 합니다. 변수. 변수 선언과 초기화는 모두 메서드에 있습니다. 메서드가 끝나면 변수가 자동으로 삭제됩니다.
멤버 변수: 멤버 변수는 클래스 내부와 메서드 본문 외부에 정의된 변수입니다. 이러한 변수는 객체가 생성될 때 인스턴스화됩니다. 멤버 변수는 특정 클래스의 메서드, 생성자 및 명령문 블록을 통해 액세스할 수 있습니다.
클래스 변수: 클래스 변수는 메서드 본문 외부의 클래스에서도 선언되지만 정적 유형으로 선언되어야 합니다.
A 클래스에는 여러 메서드가 있을 수 있습니다. 위의 예에서,짖는 소리(), 배고픈() 및 잠자는()은 모두 Dog 클래스의 메서드입니다.
생성자 메서드
모든 클래스에는 생성자 메서드가 있습니다. 클래스에 대해 생성자가 명시적으로 정의되지 않은 경우 Java 컴파일러는 클래스에 대한 기본 생성자를 제공합니다.
객체를 생성할 때 생성자를 하나 이상 호출해야 합니다. 생성자의 이름은 클래스와 동일해야 합니다. 클래스에는 여러 생성자가 있을 수 있습니다.
다음은 생성자 메서드의 예입니다.
public class Puppy{ public Puppy(){ } public Puppy(String name){ // 这个构造器仅有一个参数:name } }
객체 생성
객체는 클래스에서 생성됩니다. Java에서는 new 키워드를 사용하여 새 개체를 만듭니다. 객체를 생성하려면 다음 세 단계가 필요합니다.
Declaration: 객체 이름과 객체 유형을 포함하여 객체를 선언합니다.
Instantiation: 객체를 생성하려면 new 키워드를 사용하세요.
Initialization: new를 사용하여 객체를 생성할 때 생성자 메서드가 호출되어 객체를 초기화합니다.
객체 생성 예는 다음과 같습니다.
public class Puppy{ public Puppy(String name){ //这个构造器仅有一个参数:name System.out.println("小狗的名字是 : " + name ); } public static void main(String []args){ // 下面的语句将创建一个Puppy对象 Puppy myPuppy = new Puppy( "tommy" ); } }
위 프로그램을 컴파일하고 실행하면 다음과 같은 결과가 출력됩니다.
小狗的名字是 : tommy
인스턴스 변수 및 메소드에 접근
생성된 객체를 통해 멤버 변수 및 멤버에 접근
/* 实例化对象 */ ObjectReference = new Constructor(); /* 访问类中的变量 */ ObjectReference.variableName; /* 访问类中的方法 */ ObjectReference.MethodName();
Instance
다음 예에서는 인스턴스 변수에 액세스하고 멤버 메서드를 호출하는 방법을 보여줍니다.
public class Puppy{ int puppyAge; public Puppy(String name){ // 这个构造器仅有一个参数:name System.out.println("小狗的名字是 : " + name ); } public void setAge( int age ){ puppyAge = age; } public int getAge( ){ System.out.println("小狗的年龄为 : " + puppyAge ); return puppyAge; } public static void main(String []args){ /* 创建对象 */ Puppy myPuppy = new Puppy( "tommy" ); /* 通过方法来设定age */ myPuppy.setAge( 2 ); /* 调用另一个方法获取age */ myPuppy.getAge( ); /*你也可以像下面这样访问成员变量 */ System.out.println("变量值 : " + myPuppy.puppyAge ); } }
위 프로그램을 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다.
小狗的名字是 : tommy 小狗的年龄为 : 2 变量值 : 2
소스 파일 선언 규칙
이 섹션의 마지막 부분에서는 소스 파일의 선언 규칙을 살펴보겠습니다. 소스 파일에 여러 클래스를 정의할 때와 import 문 및 package 문이 있는 경우 이러한 규칙에 특별한 주의를 기울이십시오.
소스 파일에는 하나의 공개 클래스만 있을 수 있습니다.
소스 파일에는 여러 개의 비공개 클래스가 있을 수 있습니다.
소스 파일의 이름은 공개 클래스의 클래스 이름과 일치해야 합니다. . 예를 들어 소스 파일에 있는 공용 클래스의 클래스 이름은 Employee이고 소스 파일의 이름은 Employee.java여야 합니다.
패키지에 클래스가 정의된 경우 패키지 설명은 소스 파일의 첫 번째 줄에 있어야 합니다.
소스 파일에 import 문이 포함된 경우 패키지 문과 클래스 정의 사이에 배치해야 합니다. package 문이 없으면 import 문이 소스 파일의 첫 번째에 있어야 합니다.
import语句和package语句对源文件中定义的所有类都有效。在同一源文件中,不能给不同的类不同的包声明。
类有若干种访问级别,并且类也分不同的类型:抽象类和final类等。这些将在访问控制章节介绍。
除了上面提到的几种类型,Java还有一些特殊的类,如:内部类、匿名类。
Java包
包主要用来对类和接口进行分类。当开发Java程序时,可能编写成百上千的类,因此很有必要对类和接口进行分类。
Import语句
在Java中,如果给出一个完整的限定名,包括包名、类名,那么Java编译器就可以很容易地定位到源代码或者类。Import语句就是用来提供一个合理的路径,使得编译器可以找到某个类。
例如,下面的命令行将会命令编译器载入java_installation/java/io路径下的所有类
import java.io.*;
Employee.java 文件代码: import java.io.*; public class Employee{ String name; int age; String designation; double salary; // Employee 类的构造器 public Employee(String name){ this.name = name; } // 设置age的值 public void empAge(int empAge){ age = empAge; } /* 设置designation的值*/ public void empDesignation(String empDesig){ designation = empDesig; } /* 设置salary的值*/ public void empSalary(double empSalary){ salary = empSalary; } /* 打印信息 */ public void printEmployee(){ System.out.println("名字:"+ name ); System.out.println("年龄:" + age ); System.out.println("职位:" + designation ); System.out.println("薪水:" + salary); } }
程序都是从main方法开始执行。为了能运行这个程序,必须包含main方法并且创建一个实例对象。
下面给出EmployeeTest类,该类实例化2个 Employee 类的实例,并调用方法设置变量的值。
将下面的代码保存在 EmployeeTest.java文件中。
EmployeeTest.java 文件代码: import java.io.*; public class EmployeeTest{ public static void main(String []args){ /* 使用构造器创建两个对象 */ Employee empOne = new Employee("RUNOOB1"); Employee empTwo = new Employee("RUNOOB2"); // 调用这两个对象的成员方法 empOne.empAge(26); empOne.empDesignation("高级程序员"); empOne.empSalary(1000); empOne.printEmployee(); empTwo.empAge(21); empTwo.empDesignation("菜鸟程序员"); empTwo.empSalary(500); empTwo.printEmployee(); } }
编译这两个文件并且运行 EmployeeTest 类,可以看到如下结果:
$ javac EmployeeTest.java $ java EmployeeTest 名字:RUNOOB1 年龄:26 职位:高级程序员 薪水:1000.0 名字:RUNOOB2 年龄:21 职位:菜鸟程序员 薪水:500.0
相关推荐:
위 내용은 Java에서 클래스와 객체를 구별하는 최신 방법을 지금 제거하세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

이 기사는 2025 년에 상위 4 개의 JavaScript 프레임 워크 (React, Angular, Vue, Svelte)를 분석하여 성능, 확장 성 및 향후 전망을 비교합니다. 강력한 공동체와 생태계로 인해 모두 지배적이지만 상대적으로 대중적으로

이 기사는 원격 코드 실행을 허용하는 중요한 결함 인 Snakeyaml의 CVE-2022-1471 취약점을 다룹니다. Snakeyaml 1.33 이상으로 Spring Boot 응용 프로그램을 업그레이드하는 방법에 대해 자세히 설명합니다.

Java의 클래스 로딩에는 부트 스트랩, 확장 및 응용 프로그램 클래스 로더가있는 계층 적 시스템을 사용하여 클래스로드, 링크 및 초기화 클래스가 포함됩니다. 학부모 위임 모델은 핵심 클래스가 먼저로드되어 사용자 정의 클래스 LOA에 영향을 미치도록합니다.

이 기사는 카페인 및 구아바 캐시를 사용하여 자바에서 다단계 캐싱을 구현하여 응용 프로그램 성능을 향상시키는 것에 대해 설명합니다. 구성 및 퇴거 정책 관리 Best Pra와 함께 설정, 통합 및 성능 이점을 다룹니다.

Node.js 20은 V8 엔진 개선, 특히 더 빠른 쓰레기 수집 및 I/O를 통해 성능을 크게 향상시킵니다. 새로운 기능에는 더 나은 webAssembly 지원 및 정제 디버깅 도구, 개발자 생산성 및 응용 속도 향상이 포함됩니다.

대규모 분석 데이터 세트를위한 오픈 테이블 형식 인 Iceberg는 데이터 호수 성능 및 확장 성을 향상시킵니다. 내부 메타 데이터 관리를 통한 Parquet/Orc의 한계를 해결하여 효율적인 스키마 진화, 시간 여행, 동시 W를 가능하게합니다.

이 기사는 Lambda 표현식, 스트림 API, 메소드 참조 및 선택 사항을 사용하여 기능 프로그래밍을 Java에 통합합니다. 간결함과 불변성을 통한 개선 된 코드 가독성 및 유지 관리 가능성과 같은 이점을 강조합니다.

이 기사는 오이 단계간에 데이터를 공유하는 방법, 시나리오 컨텍스트, 글로벌 변수, 인수 통과 및 데이터 구조를 비교합니다. 간결한 컨텍스트 사용, 설명을 포함하여 유지 관리에 대한 모범 사례를 강조합니다.


핫 AI 도구

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

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

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

드림위버 CS6
시각적 웹 개발 도구

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