자바공부하기 61

 

생성자 예제_1

 

 

 

생성자 예제_2

 

 

 

자바공부하기 60

 

생성자

 

생정자 메서드

- 객체가 생성될 때 호출되어 실행하는 메서드

- 메서드 이지만 유일하게 리턴형이 없음

- 생성자 메서드의 이름은 클래스의 이름과 동일

- new 연산자가 호출된 직후에 호출

: new 연산자가 메모리를 생성하면 멤버변수들이 메모리를 할당받음

: 따라서 변수들에 대한 초기화 작업이 가능해짐

 

- 클래스에 기본 생성자 메서드가 없다면 컴파일러가 자동으로 생성해줌

: 컴파일러가 생성해주는 기본 생성자 메서드는 매개변수가 없고 블록이 비어있음

 

- 생성자 메서드의 사용이유

: 할당 받은 멤버변수를 초기화 할 때

: 객체가 생성되기 전의 미리 해야 할 작업이 있을 때

 

 

 

 

 

자바공부하기 59

 

private의 진정한 의미

 

Encapsulation

- 자료의 보호

- 내부적으로만 사용하기 위해

* "사과와 위 그리고 먹다(씹다)"

* 사과 : 외부 데이터

* 위 : private 변수

* 먹다() : public 메서드

* 그냥 집어넣으면 입 찢어지고 가슴 찢어짐

- 내부의 자료가 변경되어도 외부에 영향을 주지 않는다.

 

 

 

 

- 내부의 데이터 또는 로직이 변경되어도 외부에 영향을 주지 않는다.

 

- 액세서(accessor)

* getXXX(), setXXX()

 

- 데이터필드는 반드시 private으로 하고 엑세서를 경유하여 접근해야 한다.

단점은 번거롭고 소스가 엑세서에 묻힐 수 도 있다.

자바공부하기 58

 

메서드를 이용한 접근제어

- public 메서드를 이용하여 private 멤버필드에 데이터를 전달한다.

 

- private 멤버필드에 값 전달하기

: 값 입력받기

* 외부로부터 데이터를 매개변수 형태로 받아서 내부의 멤버에 전달

 

: 값 전달하기

* 메서드의 리턴을 통해서 멤버필드에 전달

 

- getXXX() , setXXX()

 

Class Test6 {

private int top_secret;

public void setMyTop(int x){

top_secret = x;

}

public int getMyTop() {

return top_secret;

}

}

public class Test6Main {

public static void main(String[] args) {

int s;

Test6 t6 = new Test6() ;

t6.setMyTop(1000);

s = t6.getMyTop();

System.out.println("private멤버의 값은: " +s);

System.out.println("private멤버의 값은: " + t6.getMyTop());

}

}

 

 

public메서드를 통한 private메서드의 접근

다음글에선 private에 대해 알아볼꺼에요 ^^

 

자바공부하기 57

접근제어

 

 

Class Father {

public int age;

public long height;

private float weight;

}

 

class Son extends Father {

float getWeight() {

return weight;

}

}

 

public class AccessControlMain {

public static void main(String[] args) {

Son son = new Son();

// Upcasting

Father son1 = son;

son1.age= 100;

son1.height = 170L;

son1.weight = 49.0F;

System.out.println("age". + son1.age);

System.out.println("height" + son1. height);

System.out.println("weight" + son1.weight);

System.out.println("weight:" + son.getWeight());

}

}

 

자바공부하기 56

 

접근제어

 

- public과 private의 차이, 그리고 protected

* 외부 공개 / 내부전용

 

- 선언된 객체 내의 변수에 값을 직접 할당할 수 없게 제어

* 객체의 메모리 생성 후의 접근이 기본

* 객체의 점(.)찍고 변수에 접근이 불가능

 

- 자료의 은폐화(Encapsulation)

* 객체의 메모리 생성 후, 객체 내의 변수에 대한 접근제어

* 상소관계에서 아버지 클래스와 아들 클래스 간의 접근제어

 

- 자바에서 아무 접근 제어자를 쓰지 않을 경우 package protected(default)로 설정

 

 

 

자바공부하기 55

 

overloading

 

 

 

overloading이란?

- 같은 이름을 가진 여러개의 메서드

* 클래스의 사용자를 편하게 하기 위해서 사용하는 객체지향의 기법

* 한가지이름으로 여러가지 기능을 제공

* 중복 메서드, 다중정의 메서드라고도 함

 

- overloading을 사용할 때의 규칙

* 매개변수의 개수가 다를 것

* 매개변수의 형이 다를 것

* 위의 두 가지 조건 중 하나만 달라도 overloading은 성립

* 메서드의 리턴 형은 overloading을 구분할 때 사용하지 않음

 

 

예제

 

 

JAVA공부하기 54

 

매개변수

- 메서드 내에서만 사용 가능한 변수

* parameters : 값을 받아 들이는 매개변수

* arguments : 값을 대입해 주는 매개변수

- 외부와 값을 주고 받을 수 있는 유일한 통로

- 매개변수의 개수와 데이터 타입을 반드시 일치시켜야 호출가능

 

 

 

 

매개변수예제 1)

 

class Swap

{

static void swap(int x, int y)

{

int temp;

temp=x;

x=y;

y=temp;

}

public static void main(String[] args)

{

int x= 10;

int y= 20;

 

Swap.swap(x, y);

 

System.out.println("x.. " + x)

System.out.println("y.. " + y)

}

}

 

매개변수 예제 2) 

 

 

 

--> 매개변수는 넘길 때 참조가 아니라 값을 넘긴다.

 

+ Recent posts