JAVAPROGRAMING 5

정대기·2022년 6월 28일
0

JAVA PROGRAMING

목록 보기
10/15

method(function) : 기능
java-> class 내부에서 method 선언

  • instance method
    1. 한객체 내에서만 사용. (객체당 1개)
    2. this 라는것을 가지고 있다.
    3. 꼭 객체 생성 후 사용가능
    4. 외부에서 field 를 사용하기위한 목적
    5. static field 사용가능
  • static method (main등등..)
    1. 같은 type의 모든 객체가 공유한다.(오직 1개)
    2. this 가 없다.
    3. 객체 생성 유무와 상관없이 메모리 생성
    4. instance field를 메소드내에서 사용불가.
    5. static field를 사용할 수 있다.

field 는 메소드를 통해서 사용된다.그외에는 접근 불가.
함수의 기본 형식

접근지정자 (static/final) 리턴타입 함수명(매개변수)
public static void main(String args[])

이처럼 함수를 만든다는 것은 JAVA에서 모듈화라는 의미가 있다.

  1. call by name
  2. call by value
  3. call by reference
    => call by address -> C언어

오버로딩

  • 동일한 함수명으로 여러개의 함수를 제공
    1. 매개변수의 타입이 다를경우
    2. 매개변수의 갯수가 다를경우
    3. 이둘중 하나만 달라도 가능(편하게 할려고 만듬)
    4. 같은 목적으로 사용하는 것끼리만 만들어라..(주의사항)
    5. 같은 클래스내에서 사용

Class

  1. field
    :data
  • 외부에서 객체를 사용할때 지속적으로 사용되어져야하는 데이터.
  • 접근지정자는 주로 pricate로 지정
  • instance field
  • static field
  • 필드 사용은 항상 메소드를 통해서 사용하게끔 해야한다.
  1. constructor : 객체 생성시 자동호출되어진다. 이때 딱 한번.
  • (생성자 함수)
  • default 기능 : 객체 등록 (생성자가 호출이 안될경우 객체를 생성할 수 없다.) -> 무조건 생성자를 불러라
  • 생성자를 명시적으로 만들지 않을경우 디폴트생성자를 제공해준다.
  • 오버로딩이 가능 ( 객체를 다양하게 만들 수 있다. )
  • 리턴타입이 없음. 아예없음.
  • 함수명도 인위적으로 만들 수 없고 클래스명과 동일하다.
  • 기능 :객체 생성시 필드 초기화
  • 접근지정자는 주로 public으로 사용한다.
    1. 객체를 생성해야 접근가능
    2. 단 private 인 경우 그 클래스 안에 static메소드를 만들면 접근가능
  1. method
  • 외부에서 field를 접근하는 목적
  • public 으로 주로 지정

상속구조- Object 최상위클래스

  1. this
    항상 인스턴스메소드의 첫번째 멤버변수로 항상 존재하고 있다. 사용만 가능하고 만들수는 없다.
  • 객체를 구별해준다
  • 메모리 절약효과가 있다.

지역변수와 필드변수의 이름이 똑같을때 구분할 수 있고, 현재 사용중인 객체를 받을 수 있다.

public class People{

  //필드
  int age;

  //메소드
  void setAge(int a){
    age = a;
  }
}

people이라는 클래스가 있을때 필드에는 age 라는 변수가 있고 메소드로 a라는 지역변수를 받아 age에 저장하는 메소드가 있다. 위처럼 필드 변수와 지역변수의 이름이 다르기 때문에 서로 구분이 가능하지만..

public class People{

  //필드
  int age;

  //메소드
  void setAge(int age){
  // age = age;
    this.age = age;
  }
}

이처럼 메소드에서 필드 변수와 지역 변수의 이름이 같을때 서로 어떤건지 구분할 수 없어 지역변수에서 가져온 age를 그대로 age에 저장하게 된다.
이를 구분할 수 있게 해주는 것이 this 이며 this.을 붙이게 되면 이 변수는 필드 변수라는 의미이다.

this()
: 생성자에서 오버로딩된 또 다른 생성자를 호출할때 사용
this는 생성자를 의미한다.

public class thisCall {
	
	int a;
	int b;
	
	public thisCall() {
		//this.a = 0;
		//this.b = 0;
		this(0,0);
	}
	
	public thisCall(int a) {
		//this.a = a;
		this(a,0);
	}
	public thisCall(int a, int b) {
		this.a = a;
		this.b = b;
	}
	
	public int getA() {
		return a;
	}
	
	public int getB() {
		return b;
	}
	
	public static void main(String args[]) {
		
		thisCall me = new thisCall();
		thisCall me1 = new thisCall(10);
		thisCall me2 = new thisCall(20,30);
		
		System.out.println(me.getA()+"\t"+me.getB());  //0,0
		System.out.println(me1.getA()+"\t"+me1.getB());//10,0
		System.out.println(me2.getA()+"\t"+me2.getB());//20,30
	}
}

생성자에서 필드를 초기화 할때 이방식으로 초기화할 수 있다.

0개의 댓글