Latest web development tutorials

자바 객체와 클래스

객체 지향 언어로서 자바. 그것은 다음과 같은 기본 개념을 지원합니다 :

  • 다형성
  • 상속
  • 꾸러미
  • 추상
  • 범주
  • 사물
  • 방법
  • 오버로드

이 섹션에서 우리는 객체와 클래스의 개념에 초점을 맞 춥니 다.

  • , 목적은 (객체가 여자 친구를 찾을 수 없습니다) 클래스의 인스턴스 상태와 행동이 있습니다 개체. 라는 꼬리를 흔들고, 등등 먹고 :; 행동 색상, 이름, 품종 예를 들어, 개는 그 상태 인 개체입니다.
  • 클래스 : 클래스는 개체 및 상태의 클래스의 동작을 설명하는 템플릿입니다.

인공 객체의 각 클래스에 고유 한 소년과 클래스의 아래 그림과 소녀, 그리고 :


자바 객체

지금 우리가 목적을 이해하자. 현실 세계 주위를보세요, 당신은 그래서 개체, 자동차, 개, 많은 사람들이 주위에 발견하고 있습니다. 이러한 모든 개체는 자신의 상태와 동작을.

예를 들어 개를 사용하려면, 그것은 상태입니다 : 이름, 품종, 색상, 행동 :라는 꼬리를 흔든다 및 달렸다.

실물을 비교하고 소프트웨어 객체는 그들 사이의 매우 유사합니다.

소프트웨어 객체는 상태와 행동이있다. 주 소프트웨어 객체 표현의 방법에 의해 동작 특성이다.

소프트웨어 개발에서, 대상물의 내부 상태를 동작시키는 방법을 변경하기 위해 서로 전화, 객체 방법에 의해 달성된다.

Java 클래스

클래스는 Java 오브젝트를 생성하는 주형으로서 볼 수있다.

클래스에서 자바를 이해하는 간단한 클래스 정의를 다음으로 :

public class Dog{
   String breed;
   int age;
   String color;
   void barking(){
   }
   
   void hungry(){
   }
   
   void sleeping(){
   }
}

클래스는 다음 유형의 변수를 포함 할 수 있습니다 :

  • 지역 변수 : 메소드, 생성자 또는 문 블록 정의에 변수는 지역 변수라고합니다. 변수 선언있어서 초기화되어있어서 종료 후, 변수는 자동으로 파기된다.
  • 멤버 변수 : 클래스 멤버 변수가 정의, 방법 본체 외부 변수입니다. 객체가 인스턴스화 될 때이 변수가 생성됩니다. 멤버 변수는 명령문 블록 클래스 메서드, 생성자와 특정 클래스의 방법으로 액세스 할 수 있습니다.
  • 클래스 변수 : 클래스 변수는 클래스, 몸 이외의 방법으로 선언하지만, 정적 유형으로 선언해야합니다.

클래스는 위의 예에서, 여러 방법이있을 수 있습니다 짖는 (), 배고픈 ()과 수면 () Dog 클래스입니다.


생성자

각 클래스는 생성자가 있습니다. 명시 적으로 클래스 생성자를 정의하지 않으면, 자바 컴파일러는 클래스의 기본 생성자를 제공 할 것입니다.

객체 생성, 적어도 생성자를 호출 할 수 있습니다. 생성자의 이름은 클래스는 여러 생성자를 가질 수 클래스와 같은 이름이어야합니다.

다음은 생성자의 예입니다 :

public class Puppy{
   public Puppy(){
   }

   public Puppy(String name){
      // 这个构造器仅有一个参数:name
   }
}

개체 만들기

객체는 클래스를 기반으로 만들어집니다. 자바에서 새 개체를 만들려면 new 키워드를 사용합니다. 객체를 생성하면 다음과 같은 세 가지 단계가 필요합니다 :

  • 면책 조항 : 오브젝트 이름 및 오브젝트 유형을 포함하는 객체를 선언합니다.
  • 예 : 새 키워드는 개체를 만들 수 있습니다.
  • 초기화 : 객체가 호출되는 초기화하는 기본 생성자를 사용하여 새 개체를 만듭니다.

여기서 객체를 생성하는 예이다 :

public class Puppy{
   public Puppy(String name){
      //这个构造器仅有一个参数:name
      System.out.println("Passed Name is :" + name ); 
   }
   public static void main(String []args){
      // 下面的语句将创建一个Puppy对象
      Puppy myPuppy = new Puppy( "tommy" );
   }
}

컴파일하고 다음과 같은 결과를 출력 할 위의 프로그램을 실행합니다 :

Passed Name is :tommy

액세스 인스턴스 변수와 메소드

다음과 같이 생성 된 개체를 통해 멤버 변수와 멤버 메서드에 액세스하려면 :

/* 实例化对象 */
ObjectReference = new Constructor();
/* 访问其中的变量 */
ObjectReference.variableName;
/* 访问类中的方法 */
ObjectReference.MethodName();

다음의 예는 인스턴스 변수와 통화 멤버 메서드에 액세스하는 방법을 보여줍니다

public class Puppy{
   int puppyAge;
   public Puppy(String name){
      // 这个构造器仅有一个参数:name
      System.out.println("Passed Name is :" + name ); 
   }

   public void setAge( int age ){
       puppyAge = age;
   }

   public int getAge( ){
       System.out.println("Puppy's age is :" + puppyAge ); 
       return puppyAge;
   }

   public static void main(String []args){
      /* 创建对象 */
      Puppy myPuppy = new Puppy( "tommy" );
      /* 通过方法来设定age */
      myPuppy.setAge( 2 );
      /* 调用另一个方法获取age */
      myPuppy.getAge( );
      /*你也可以像下面这样访问成员变量 */
      System.out.println("Variable Value :" + myPuppy.puppyAge ); 
   }
}

컴파일하고 위의 프로그램은 다음과 같은 결과를 실행합니다 :

Passed Name is :tommy
Puppy's age is :2
Variable Value :2

소스 파일 선언 규칙

이 섹션의 마지막 부분에서는, 규칙 소스 파일 선언 배울 것이다. 당신은 하나의 소스 파일에 여러 클래스를 정의하고, import 문 및 패키지 문이있는 경우,이 규칙에 특별한주의를 지불해야합니다.

  • 소스 파일은 하나의 공용 클래스를 가질 수있다
  • 소스 파일은 여러 비공개 클래스를 가질 수 있습니다
  • 소스 파일 이름과 클래스 이름 공용 클래스는 일치해야합니다. 예를 들어, 소스 파일의 클래스 이름 공용 클래스는 소스 파일 Employee.java 지정해야 직원이다.
  • 클래스가 패키지로 정의되는 경우, 패키지 문은 소스 파일의 첫번째 라인이어야한다.
  • 소스 파일 가져 오기 문을 포함하는 경우, 문은 패키지와 클래스 정의 사이에 위치한다. 패키지에는 문이 없으면 임포트 명령문은 소스 파일의 최초이어야한다.
  • 수입 패키지 제표 및 소스 파일에 정의 된 모든 클래스의 문은 유효합니다. 같은 소스 파일이 아닌 다른 패키지 명세서의 다른 클래스이다.

가 액세스 등급 여러 단계가 있으며, 클래스는 서로 다른 타입으로 나눌 수있다 : 추상 클래스 최종 클래스 등을들 수있다. 이러한 액세스 제어 섹션에 설명되어 있습니다.

내부 클래스 익명 직업 전술 한 유형 외에도, 자바와 같은 특별한 범주가있다.


Java 패키지

패키지는 주로 클래스와 인터페이스를 분류하는 데 사용됩니다. 언제 클래스의 수백을 쓸 수있는 자바 프로그램을 개발, 그래서 클래스와 인터페이스를 분류 할 필요가있다.

가져 오기 문

자바에서, 경우 패키지 이름, 클래스 이름을 포함하여 완전한 이름을 부여하고 자바 컴파일러가 쉽게 소스 코드 또는 범주를 찾을 수 있습니다. 컴파일러는 클래스를 찾을 수 있도록 import 문은 적절한 경로를 제공하는데 사용된다.

예를 들어, 다음 명령 줄 컴파일러 명령은 모든 클래스 java_installation / 자바 / IO 경로를로드합니다

import java.io.*;

간단한 예

직원 및 EmployeeTest :이 예에서는 두 개의 클래스를 만듭니다.

첫째,에 다음 코드를 붙여 넣습니다 텍스트 편집기를 엽니 다. 저장을 Employee.java로 파일을 참고.

이름, 나이, 지정 및 급여 : Employee 클래스는 네 개의 멤버 변수가 있습니다. 클래스는 명시 적으로 하나의 매개 변수 생성자 메소드를 선언합니다.

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:"+ name );
      System.out.println("Age:" + age );
      System.out.println("Designation:" + designation );
      System.out.println("Salary:" + salary);
   }
}

프로그램 실행은 main 메소드에서 시작됩니다. 프로그램을 실행하고, 주요 방법은 객체의 인스턴스를 생성 포함해야합니다.

다음은 Employee 클래스의 두 인스턴스를 초기화하고, 변수의 값을 설정하는 메소드를 호출, EmployeeTest 클래스입니다.

다음 코드 EmployeeTest.java 파일에 저장된다.

import java.io.*;
public class EmployeeTest{

   public static void main(String args[]){
      /* 使用构造器创建两个对象 */
      Employee empOne = new Employee("James Smith");
      Employee empTwo = new Employee("Mary Anne");

      // 调用这两个对象的成员方法
      empOne.empAge(26);
      empOne.empDesignation("Senior Software Engineer");
      empOne.empSalary(1000);
      empOne.printEmployee();

      empTwo.empAge(21);
      empTwo.empDesignation("Software Engineer");
      empTwo.empSalary(500);
      empTwo.printEmployee();
   }
}

두 파일을 컴파일하고 EmployeeTest 클래스를 실행하면 다음과 같은 결과를 볼 수 있습니다

C :> javac Employee.java
C :> vi EmployeeTest.java
C :> javac  EmployeeTest.java
C :> java EmployeeTest
Name:James Smith
Age:26
Designation:Senior Software Engineer
Salary:1000.0
Name:Mary Anne
Age:21
Designation:Software Engineer
Salary:500.0