2주차

김예지·2022년 7월 5일
0

1일차

Overloading : 이름이 동일한 메소드들을 쌓는다.

오버로딩 조건

  • 메소드명이 같아야 한다
  • 메소드의 매개변수의 갯수가 달라야 한다.
  • 메소드의 매개변수의 자료형이 달라야 한다.
  • 메소드의 매개변수의 갯수가 같고 자료형이 같은 경우에 매개변수의 위치가 달라야 한다.

Class : 필드와 메소드의 집합체 + 생성자
//객체 = 참조 자료형 변수

참조자료형 형식

자료형 객체명 = new 자료형();

  • 한 파일 안에는 public class는 한개만 가능하다
  • public class는 파일명과 같은 곳에 지정한다 (메인 메소드도 포함)
  • 한 파일에 여러 클래스 작성 가능

생성자(Constructor) : 객체를 생성하면서 동시에 멤버필드를 초기화하는 기능을 수행하는 것
생성자 형식 : public 생성자명( ){ }

  • 클래스이름과 동일해야한다
  • 뒤에 소괄호가 붙는다
  • 블럭으로 영역지정
    생성자 오버로딩 == 메소드 오버로딩 조건과 동일
    생성자의 목적 : 멤버 필드 초기화
  • 생성자가 한 줄도 없다면 자동생성이 된 것이다.
  • 생성자를 한 줄이라도 작성하면 디폴트 생성자를 (클래스명(){ }) 따로 작성해줘야 한다.
  • 객체를 생성함과 동시에 생성자도 동시에 호출 된다

2일차

정보은닉 : 멤버필드에 직접 접근하지 못하도록 막는 것 (encapsule)

접근제어자 종류 : public > protected > defalt > private
<허용 범위>
같은 클래스 => public protected defalt private
같은 패키지 => public protected defalt
같은 상속 자식 => public proteted
그외(같은 프로젝트만 허용) => public

<접근제어자 사용 가능 여부>

  • 클래스 : public defalt
  • 멤버필드 : public protected defalt private
  • 메소드 : public protected defalt private
  • 생성자 : public protected defalt private

set메소드(매개변수 필수) get메소드는(리턴값 필수) 멤버필드 초기화 목적이다

private int x;
public void setX(int new_x) { //멤버필드 초기화 목적 
		x = new_x;
	}
public int getX() {
		return x;
	}
    

*패키지 안에 새로운 패키지를 추가할 때는 패키지 이름을 패키지명.새로운패키지명으로 작성하면 된다

package 기술 방법

클래스형식의 바깥 맨 위에 기술(권장)

package 경로;

import 기술 방법

클래스 형식의 바깥에 기술 , 되도록 packge 구문 아래 기술
packge가 없을 때는 맨 위에 기술(권장)

import 경로.클래스명; or import 경로.*(경로 안에 들어간 모든 클래스 허용);

*클래스명이 같을 때는 객체생성시에 경로를 추가 하면 된다. (해당 클래스의 접근 제어자 확인)

public String name = "가나다";
	
	public void setName(String nameVal) {
		 String name = nameVal; // 멤버변수 name와 메소드 변수 name은 서로 다른 변수 
		 						//name = null
	}							// 객체 생성시 setName(); 값을 지정하면 setName();에만 그 값이 들어간다
	public String getName() {
		return name; //name = "가나다"
	}

. 실행이 안 될 때 => profects => Clean => f5
. 지역변수는 외부에서 접근이 안 된다.

3일차

static (클래스 변수): 메모리 공유 (해당 클래스 내에서)

  • static메소드에서 멤버필드는 static이 붙은 것만 들어올 수 있다
  • 지역변수에는 static이 올 수 없다
  • 메모리를 공유하기 때문에 따로 객체 생성을 하지 않고 사용이 가능하다
  • 값이 고정일 때 사용

this : 내 객체라는 의미
this() : 자신의 다른 생성자 호출
this() 생성자 안에만 기술 가능
this() 무조건 생성자 블록 안의 가장 맨 첫번째 줄에 와야한다.

4일차

싱글톤 패턴 : 하나의 (한 개의) 객체만 생성하도록 강제하는 패턴

  • 자신(클래스)안에 자신의 객체를 꼭 하나 생성하는 필드가 존재해야한다
  • 바깥(외부)에서 접근하지 못하도록 : private
  • 공유가 되어야 한다 : static
  • 꼭 객체를 얻을 때 : getter(무조건 모두 접근가능하도록 처리한다) 메소드를 통해서 얻어야 한다.
  • 생성자가 외부에서 접근 되지 못 하도록

instanceof(이항 연산자) : 객체 비교
System.out.println(m1 instanceof Memory); //m1의 자료형이 Memory에 속하는가

package secone;

public class ArgumentClass {

	public static void main(String[] args) {
		if(args.length <= 0) {
			System.out.println("파리미터를 입력해주세요");
		}else {
			int a = 0;
			int i =0;
			for(String s : args) {
				System.out.println("args["+ i +"]의 값은 " +s);
				i++;
			}
		}

	}

}

args[0]의 값은 가나
args[1]의 값은 다라
args[2]의 값은 마
args[3]의 값은 바사
//configurations -> Arguments 로 들어가서 파라미터를 직접 추가한다

//Ctrl + Shift + s + r =get,set 메소드 단축키
//tep => Shift + v main 메소드 단축키
//.split("-") 메소드 : -을 기준으로 스프링 배열을 만든다.
가나 - 다라 - 마 - 바사 => {"가나","다라","마","바사"}
wrapper class = 기본자료형을 참조자료형 화한 클래스
char => Character
int => Integer <=> Integer로 만든 객체명.toString(String화) <=> Interger.parsrInt(객체명 단 숫자만 있을 경우 )
long => Long <=> Long로 만든 객체명.toString(String화) <=> Long.parsrLong(객체명 단 숫자만 있을 경우)
float => Float <=> Float로 만든 객체명.toString(String화) <=> Float.parsrFloat(객체명 단 숫자만 있을 경우)
double => Double <=> Double로 만든 객체명.toString(String화) <=> Double.parsrDouble(객체명 단 숫자만 있을 경우)

5일차

//void 메소드에서는 return은 break역할을 한다

상속 : 기존 클래스 기능을 확장시키는 개념 (다향성을 위해 사용)

부모클래스 => 상위클래스 => Super => base
자식클래스 => 하위클래스 => Sub => derived

class 부모 {}
class 자식 extends 부모{}

//생성자는 상속 되지 않는다
//Object는 최상위 클래스 모든 클래스에 자동으로 상속된다

super :
super() : 자식의 생성자 안에

profile
나만의 방식을 찾아가는 신입신입 개발자

0개의 댓글