한 클래스 내에서 같은 이름으로 메서드를 여러개 정의하는 것
이미 같은 이름의 메서드가 존재한다 하더라도 매개변수의 타입과
갯수가 다르면같은 이름으로 정의 할 수 있음
메서드명이 같아야한다
매개변수 개수 혹은 타입이 달라야한다
반환 타입은 오버로딩에 영향을 미치지 않는다.
public class Overloading {
//int + int = int
int add(int x, int y) {
return x + y;
}
double/*앞의 반환타입은 영향미치지 않는다*/ add(double x, int y) {
return (int)x + y ;
}
//오버로딩이 되지 않는다면 매번 메서드의 이름을 다 다르게 지어줘야한다.
//add만 알면 다 적용할 수있고, 부가적인 설명의 추가가 필요없다.
//메서드명과 파라미터의 데이터 타입으로 판단한다!
//double add(int x, int y)하면 중복으로 인식함
//double add(int x1, int y1)으로 해도 중복으로 인식함
//매개변수의 데이터 타입이 같고 매개변수의 이름이 다르다고 해도
//오버로딩은 성립하지 않는다
int add(int x, int y, int z) {
return x + y + z; //데이터 타입이 같아도
//파라미터의 갯수가 다르면 오버로딩 성립한다.
}
public static void main(String[] args) {
}
}
인스턴스가 생성될때 호출되는 인스턴스 초기화 메서드
인스턴스 변수의 초기화 작업에 사용
인스턴스 생성 시에 실행되어야 할 작업을 작성하는 위치
생성자의 이름은 해당 클래스 명과 같아야한다
생성자는 반환값이 없음!
class Circle {
double ✅radius; //⭐인스턴스 변수
double diameter;
double circumference;
double area;
//null이나 0으로 초기화 시키고 싶지않으면 직접 생성자 만들면 된다
//생성자 사용 방법
//클래스명([파라미터[, ...]]){인스턴스 생성시 실행할 코드}
//[]안에 있는건 와도 되고 아니여도 된다.
Circle(double 🔴radius){ //파라미터가 없는 경우에도 쓸수 있고,
//파라미터를 받아서 쓸수도 있다.
System.out.println("Circle이 생성됩니다.");
this.✅radius = 🔴radius; //클래스 기준으로 위에 만든
//⭐인스턴스 변수는 전역 변수이다
//변수는 최대한 모두가 알아보기 쉽게 설정하는게 좋은데
//지금의 경우에는 인스턴스 변수로 ✅radius가 설정되어있는
//상태라 변수🔴radius와 같은 이름을 갖게된다
//이럴 경우 헷갈릴수있다! -> this 사용해서 인스턴스 변수를 지칭해준다.
//this는 해당 인스턴스를 지칭, 이 인스턴스의 radius를 따라라는뜻
//this : 인스턴스 자신. this를 하지않으면 매개변수로
//받는 radius를 인식하게 된다
//인스턴스 변수를 지칭하고자 할때는 모든 경우에 다 this를 찍는게 좋다.
//(초기화 작업을 할때)
//생성자만들때는 꼭 this 찍어주는게 좋다!
this.diameter = 2 * radius;
this.circumference = 3.14 * 2 * radius;
this.area = 3.14 * radius * radius;
}
// 생성자 쓸때 오버로딩이 사용된다!
// 생성자도 메서드이기 때문에 오버로딩을 적용해서
// 매개변수에 따라 다른 작업을 수행하게 할 수 있다
Circle(){
//빈생성자 메서드
System.out.println("빈 생성자 입니다.");
this.radius = 10;
this.diameter = 2 * this.radius;
this.circumference = 3.14 * this.diameter;
this.area = 3.14 * this.radius * this.radius;
}
//매개변수 받는 생성자 메서드
//생성자를 이용한 인스턴스 복사
Circle(Circle circle/*참조변수를 매개변수로 받아옴*/) {
this.radius = circle.radius;
this.diameter = circle.diameter;
this.circumference = circle.circumference;
this.area = circle.area; //하나하나 다 찍어주면 이렇게 복사가된다.
//복사하고자 하는 인스턴스 변수를 받고자 하는 참조변수에 복사해준다.
}
}
public class Constructor {
public static void main(String[] args) {
System.out.println("===생성자==="); //실행되는 위치 확인 위해
//이런 코드 사용해서 콘솔에서 생성 위치 파악할수 있다
//빈 생성자 메서드 사용
Circle circle1 = new Circle();
/*Circle()생성시 초기화 해주는 메서드 = 생성자*/
//인스턴스 생성
//매개변수 받아서 사용하는 메서드 사용
Circle circle2 = new Circle(5);
System.out.println("===생성자===");
//기본 생성자가 컴파일러에 의해 추가되는 경우는
//클래스에 정의된 생성자가 하나도 없을 때 뿐!
//생성자를 만들어줬으므로 밑에 초기화는 주석처리
// System.out.println(circle1.radius); //초기화 되어있어서 사용가능
// circle1.radius = 10; //인스턴스 변수 초기화 작업
// circle1.diameter = 20;
// circle1.circumference = 62.8;
// circle1.area = 314;
//참조변수의 경우 초기화를 하지 않으면 null값으로 된다 : 사용할 수 없음
System.out.println(circle1.area);
System.out.println(circle2.area);
//double radius; //초기화 하지 않음
//System.out.println(radius); 초기화 되지 않아 사용 못한다
}
}
$ git config --global user.name "이름"
$ git config --global user.email "이메일"
~ : 현재 홈 디렉터리
$ pwd : 현재 위치의 경로
$ ls : 현재 디렉토리에 어떤 파일이나 디렉터리가 있는지
//ls 명령 옵션
$ ls -a : 숨김파일과 디렉터리 표시
$ ls -l : 파일과 디렉터리의 상세정보까지 표시
$ cd .. : 상위 디렉터리로 이동
$ mkdir 파일이름 : 현재 디렉터리 안에 하위 디렉터리 생성
$ rm 파일이름 : 디렉터리 삭제할때 명령어
//rm 명령옵션
$ rm -r : 디렉터리 파일에 있는 하위 디렉터리와 파일까지 모두 삭제
$ vim 텍스트파일이름.txt : 새로운 텍스트 문서를 만드는 명령
같은 파일의 이름이 있다면 그 파일을 연다
//vim 명령어
A 또는 I버튼 눌러서 입력모드로 전환
ESC 눌러서 종료모드로 전환
:wq 입력해 저장 및 종료
:q! 문서를 저장하지 않고 편집기 종료
작업트리 : 파일 수정, 저장등의 작업을 하는 디렉터리, 작업 디렉터리
스테이지 : 버전으로 만들 대기파일이 저장되는 곳, 스테이징 영역
저장소 : 스테이지에서 대기하고 있던 파일들을 버전으로 만들어 저장,
repository
$ git init : git을 사용할 수 있도록 git 초기화
//git 초기화 시, .git 이라는 디렉터리 생성
//.git : git이 저장될 저장소
$ git status : git의 상태를 확인한다
$ git add 텍스트파일이름.txt : 스테이지에 작업트리의 파일을 올린다
$ git commit : 깃에서 파일을 commit한다
//commit 명령 옵션
$ git commit -m "할말" : 깃에서 커밋할때 저장할 메시지 입력
$ git commit -am "할말" : 스테이지에 올리고 커밋하는 과정을 한번에 처리
한번이라도 commit한 기록이 있는 파일 다시 commit한다
$ git log : 저장소에 저장된 버전을 확인한다
$ git diff : 작업트리에 있는 파일과 스테이지에 있는 파일을 비교하거나
스테이지에 있는 파일과 저장소에 있는 최신 commit을 비교해서
수정한 파일을 commit하기 전에 최종적으로 확인