Ch03: Introduction to Classes, Objects, Methods and Strings
Account Class with an Instance Variable, a set Method and a get Method
public class Account {
private String name;
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
클래스 선언
public
으로 선언된 클래스의 이름은 파일 이름과 같아야 한다.- 접근 지정자
public
은 어디서든지 접근 가능하도록 한다.
인스턴스 변수
- 클래스의 객체는 각각의 클래스의 인스턴스 변수의 복사본을 가진다.
- 접근 지정자
private
로 선언된 변수나 메소드는 오직 선언된 클래스의 메소드를 통해 접근 가능하다. - 보통, 클래스의 바디에 인스턴스 변수를 가장 먼저 적는 것을 선호하지만 사실 메소드 선언 밖이라면 어디서든지 적을 수 있다.
클래스 Account의 setName 메소드
- 접근 지정자가
public
이다. 즉 이 메소드는 어디서든지 접근 가능하다. - 메소드 이름은 관습적으로, 소문자로 시작해 단어마다 대문자로 시작한다.
매개 변수는 지역 변수
- 지역 변수는 특정 메소드의 바디에 선언된 변수들이다.
- 자동으로 초기화되지 않는다.
- 메소드가 종료되면, 지역 변수의 값들은 제거된다.
setName 메소드 바디
this
키워드가 객체 변수를 명시적으로 언급하기 위해 사용되었다.
클래스 Account의 getName 메소드
- 메소드 이름 이후의 빈 괄호는, 일을 수행하기 위해 추가적인 정보가 필요없다는 것이다.
void
키워드를 사용하면 안된다.
드라이버 클래스 AccountTest
- 다른 클래스의 객체를 형성하고, 그 객체의 메소드를 호출하는 클래스이다.
import java.util.Scanner;
public class AccountTest {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
Account myAccount = new Account();
System.out.printf("Initial name is: %s%n%n", myAccount.getName());
System.out.println("Please enter the name:");
String theName = input.nextLine();
myAccount.setName(theName);
System.out.println();
System.out.printf("Name in object myAccount is: %n%s%n", myAccount.getName());
}
}
Account Class with an Instance Variable, a set Method and a get Method(Cont.)
Class Account는 어플리케이션이 아니다
main
을 포함하지 않기 때문이다.- 즉,
Account
를 실행할 수 없다.
드라이버 클래스 AccountTest
- 새로운 클래스를 시험하기 위해
main
메소드를 가지는 분리된 클래스이다.
객체의 인스턴스화-키워드 new와 생성자
- 클래스 인스턴스 형성은 키워드
new
로 시작하고 객체가 형성된다. - 생성자는 메소드와 비슷하지만, 암묵적으로 객체가 형성된 순간 객체의 인스턴스 변수를 초기화하기 위한 새로운 연산자로 취급된다.
null-String 변수의 기본 초기값
- 지역 변수는 자동으로 초기화되지 않는다.
- 모든 인스턴스 변수는 기본 초기값을 가진다.
- 인스턴스 변수의 초기값이 없으면, 자바가 제공하는 값이다.
String
형 인스턴스 변수의 기본 초기값은null
이다.
Compiling and Executing an App with Multiple Classes
어떤 클래스도 main
메소드를 가질 수 있다
- JVM은 어플리케이션 실행을 위해 오직 클래스의
main
메소드만을 호출한다.
Account UML class diagram
- - 는
private
, +는public
과 상응한다.
static 메소드 main
main
에static
을 붙여 JVM이main
메소드가 어디있는지 찾아 실행한다.static
덕분에 처음에main
메소드가 선언된 클래스의 객체를 만들 필요 없이main
메소드를 실행할 수 있다.
Additional Notes on Class AccountTest
import 선언에 대한 메모
- 대부분의 클래스는 명시적으로
import
되어야 한다. - 암묵적으로
import
되는 클래스들은,System
과String
같은java.lang
패키지의 클래스이다.- 같은 디렉토리에 존재하는 클래스들이다. 이들은 같은 기본 패키지로 고려된다.
- 클래스 이름을 패키지 이름까지 항상 모두 적으면,
import
선언이 필요없다.
java.util.Scanner input = new java.util.Scanner(System.in);
Software Engineering with private instance Variables and public set and get Methods
자료 은닉 또는 정보 은닉
private
키워드를 통해 인스턴스 변수를 객체 안에 숨기고, 오직 그 객체의 메소드를 통해서만 접근이 가능하도록 하는 것이다.
Account Class: Initializing Objects with Constructors
public class Account {
private String name;
// 반환형이 없다.
public Account(String name) {
this.name = name;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
public class AccountTest {
public static void main(String[] args) {
Account account1 = new Account("Jane Green");
Account account2 = new Account("John Blue");
System.out.printf("account1 name is %s%n", account1.getName());
System.out.printf("account2 name is %s%n", account2.getName());
}
}
생성자는 반환형이 없다
- 생성자는 매개 변수는 가질 수 있지만, 반환형은 가질 수 없다.
기본 생성자
- 만약 클래스가 기본 생성자를 정의하지 않는다면, 컴파일러는 매개 변수가 없는 기본 생성자를 제공한다.
- 클래스의 인스턴스 변수를 기본값으로 초기화하기 위함이다.
생성자를 정의한 클래스는 기본 생성자가 없다
- 만약 클래스에 생성자를 정의하면, 컴파일러는 기본 생성자를 형성하지 않는다.
Primitive Types vs. Reference Types
원시 자료형
boolean
,byte
,char
,short
,int
,long
,float
,dobule
이 있다.- 원시 자료형 변수는 한 번에 선언된 종류의 한 가지 값만 가질 수 있다.
- 원시 자료형 인스턴스 변수는 기본값으로 초기화 된다.
boolean
→false
byte
,char
,short
,int
,long
,float
,dobule
→0
참조 자료형
- 원시 자료형이 아닌 자료형, 즉, 클래스 형이다.
- 참조 자료형 변수는 컴퓨터 메모리 상의 객체의 위치, 즉 참조값을 저장한다.
- 참조 자료형 인스턴스 변수는 "아무것도 아닌 것을 참조한다."는 뜻의
null
기본값으로 초기화 된다.
다른 클래스의 객체를 사용할 때,
- 객체의 참조는 객체의 메소드를 통하도록 요구된다.
- 객체에게 메시지를 보낸다는 것으로 알려져있다.
참고: Call-by-value와 Call-by-reference 차이점
Call-by-value
- 함수가 호출될 때, 메모리 공간 안에서는 함수를 위한 별도의 임시 공간이 생성됨. 함수가 종료되면 해당 공간은 사라짐.
- call-by-value 호출 방식은 함수 호출시 전달되는 변수의 값을 복사하여 함수의 인자로 전달.
- 복사된 인자는 함수 안에서 지역적으로 사용되는 지역 변수의 특성을 가짐.
- 따라서 함수 안에서 인자의 값이 변경되어도, 외부의 변수의 값은 변경되지 않음.
- 자바의 경우 메소드에 전달되는 인자의 데이터 타입에 따라서 함수 호출 방식이 달라짐.
- 원시 자료형 : call-by-value로 동작 .
- 참조 자료형: call-by-reference로 동작 .
Call-by-reference
- 함수가 호출될 때, 메모리 공간 안에서는 함수를 위한 별도의 임시 공간이 생성됨. 함수가 종료되면 해당 공간은 사라짐.
- call-by-reference 호출 방식은 함수 호출시 인자로 전달되는 변수의 참조값을 전달. (해당 변수를 가르킨다.)
- 따라서 함수 안에서 인자의 값이 변경되면, 인자로 전달된 객체의 값도 함께 변경됨.
Author And Source
이 문제에 관하여(Ch03: Introduction to Classes, Objects, Methods and Strings), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@scv1702/Ch03-Introduction-to-Classes-Objects-Methods-and-Strings저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)