자바 객체와 클래스
객체 지향 언어로서 자바. 그것은 다음과 같은 기본 개념을 지원합니다 :
- 다형성
- 상속
- 꾸러미
- 추상
- 범주
- 사물
- 예
- 방법
- 오버로드
이 섹션에서 우리는 객체와 클래스의 개념에 초점을 맞 춥니 다.
- , 목적은 (객체가 여자 친구를 찾을 수 없습니다) 클래스의 인스턴스 상태와 행동이 있습니다 개체. 라는 꼬리를 흔들고, 등등 먹고 :; 행동 색상, 이름, 품종 예를 들어, 개는 그 상태 인 개체입니다.
- 클래스 : 클래스는 개체 및 상태의 클래스의 동작을 설명하는 템플릿입니다.
인공 객체의 각 클래스에 고유 한 소년과 클래스의 아래 그림과 소녀, 그리고 :
자바 객체
지금 우리가 목적을 이해하자. 현실 세계 주위를보세요, 당신은 그래서 개체, 자동차, 개, 많은 사람들이 주위에 발견하고 있습니다. 이러한 모든 개체는 자신의 상태와 동작을.
예를 들어 개를 사용하려면, 그것은 상태입니다 : 이름, 품종, 색상, 행동 :라는 꼬리를 흔든다 및 달렸다.
실물을 비교하고 소프트웨어 객체는 그들 사이의 매우 유사합니다.
소프트웨어 객체는 상태와 행동이있다. 주 소프트웨어 객체 표현의 방법에 의해 동작 특성이다.
소프트웨어 개발에서, 대상물의 내부 상태를 동작시키는 방법을 변경하기 위해 서로 전화, 객체 방법에 의해 달성된다.
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