전체 글 149

[Git] Git 버전관리 장점, 특징

1) Git이란? 버전관리 시스템의 한 종류 2) 버전관리 여러 파일을 하나의 버전으로 묶어 관리하는 것 3) 버전 관리 시스템의 종류 1. 클라이언트-서버 모델 하나의 중앙 서버로 여러 클라이언트들이 각자 필요한 데이터만 가져와서 작업을 하고, 다시 중앙 서버로 보내어 통합하는 방식 (CVS, Subversion=SVN) 2. 분산 모델 하나의 중앙 서버가 존재하지만 여러 클라이언트들은 각자의 컴퓨터 저장소에 전체 사본을 가지고 작업하는 방식(Git) 4) Git의 장점 - 동시에 작업하는 사람들과 소스코드를 주고받을 필요가 없음 - 같은 파일을 여러명이 동시에 병렬 개발이 가능 - 변동 과정을 체계적으로 관리할 수 있고, 언제든지 지난 시점의 버전으로 되돌릴 수 있음 - 인터넷이 연결되지 않은 곳에서..

Git 2021.05.29

[Java] 예외 처리

1) 에러와 예외의 차이 1. 에러 심각한 오류 2. 예외 덜 심각한 오류 2) try ~ catch ~ finally try{ 예외가 발생할 수 있는 문장1 예외가 발생할 수 있는 문장2 } catch( 예외클래스명 객체명 ){ 예외 발생시 실행할 문장 } catch( 예외클래스명 객체명 ){ 예외 발생시 실행할 문장 } ... (catch문은 여러개 가능) fianlly{ 예외 발생 유무에 상관없이 무조건 실행할 문장 } // finally문은 생략 가능 ** 해당 구문 블럭처리 후 alt + shift + z + 아래화살표 : try~catch 블럭 만들기 ** package exception; public class ExceptionTest { public static void main(Strin..

Back-End/JAVA 2021.05.28

[Java] 내부 클래스(inner class)

1) 내부클래스 클래스 내부에 클래스를 선언하여 외부 클래스의 필드에 용이하게 접근하기 위해서 사용한다. 내부 클래스의 필드를 사용하기 위해서는 외부 클래스 객체에서 내부 클래스를 객체화해야한다. 하지만 외부 클래스의 필드에서는 자신이랑 같이 올라와있는 내부 클래스를 바로 객체화 할 수 있다. 외부클래스명 out = new 외부클래스생성자( ); 외부클래스명.내부클래스명 in = out.new 내부클래스생성자( ); 2) 내부클래스 사용이유 1. 상속처럼 이용 외부 클래스의 필드를 마치 내것처럼 접근하여 사용하기 위함 2. 캡슐화 외부 클래스가 없다면 내부 클래스도 존재할 수 없기 때문에 다른 클래스에서 접근하지 못하도록 내부 클래스를 숨기기 위함(직접 객체화하지 말라는 뜻) 3) 가정 A 클래스에서 b..

Back-End/JAVA 2021.05.28

[Java] 인터페이스(interface)

추상클래스를 고도화시킨 문법이며, 반드시 추상메소드와 상수만 선언해야한다. 다른 클래스에서 인터페이스를 지정받을 때에는 implements를 사용한다. 지정받은 클래스는 인터페이스가 갖고있는 추상 메소드들을 반드시 재정의 해야한다. interface 인터페이스명{ 상수 추상메소드 default 메소드 } jdk8 버전 이후부터는 인터페이스에 default 메소드를 선언할 수 있다. 따라서 사실상의 다중상속을 지원하게 된다. 인터페이스 끼리나 다른 클래스와의 메소드 모호성이 발생한다면(이름 중복) 지정, 상속받은 클래스에서 명시적으로 작성(재정의)해 주어 모호성을 해결해줘야한다. public class D extends C implements A, B { @Override public void f() { ..

Back-End/JAVA 2021.05.27

[Java] 추상 클래스(abstract)

1) 추상 클래스(불완전한 클래스) 추상적인 내용만 정의하고 있는 클래스로 구체적인 내용은 상속받은 하위 클래스에서 구현되도록 설계된 클래스이다. 추상 클래스(부모)는 클래스들(자식)의 공통 요소들을 가상화시켜놓기 때문에 객체화시 구현(재정의)을 꼭 해줘야한다. 부모 추상 클래스의 역할은 단지 자식 클래스를 만들 때 도와주는 역할을 수행한다. 그렇기 때문에 자식 클래스에서 선언할 메소드의 이름과 형태만 가지고 있다. 즉, 메소드에 { } (바디)가 없다. 이런 메소드를 추상 메소드라고 하며, 리턴타입 앞에 abstract 라는 키워드가 붙는다. 추상 메소드가 클래스 내에 한 개라도 포함되어있다면 추상 클래스로 선언해야 한다. 2) 추상 클래스 선언 abstract class 클래스명{ 리턴타입 일반메소드..

Back-End/JAVA 2021.05.27

[Java] 접근 권한 제어자(접근제어자)

다른 패키지 혹은 다른 클래스에서 해당 필드에 접근할 수 있는 범위를 설정해주는 키워드들 1. default : 다른 패키지에서 접근 불가. 2. public : 모든 곳에서 접근 가능. 다른 패키지에서 어떤 객체로 해당 필드에 접근하고 싶을 때 3. private : 자기자신의 클래스에서만 사용가능. 다른 클래스에서 접근 불가. 다른 곳에서 해당 필드에 절대 접근하지 못하게 하고 싶을 때 4. protected : 다른 패키지에서 접근 불가. 단, 상속받은 자식클래스에서는 접근 가능. 객체화해서 사용 불가능. 상속받은 클래스에서 자신의 필드처럼 쓰게 하고 싶을 때 private 필드는 직접 접근할 방법이 전혀 없기 때문에 무조건 public 메소드를 통해서 간접 접근한다. public 메소드를 통해서 ..

Back-End/JAVA 2021.05.27

[Java] Casting(Upcasting, Downcasting), instanceof

1) 업 캐스팅(Up Casting) 부모 타입의 객체에 자식 생성자를 호출 부모 타입의 객체에 자식 클래스의 필드 주소값을 담아주는 것 업 캐스팅된 객체는 자식 클래스에서 추가된 내용을 사용할 수 없다. 부모 필드의 내용만 사용 가능하다. 단, 오버라이딩 된 메소드는 사용 가능하다. 부모클래스 객체명 = new 자식생성자(); package zoo; public class Ground { public static void main(String[] args) { //Dog jindo = new Dog("백구", "수컷", 21); //Hamster panda = new Hamster("햄토리", "암컷", 18); //jindo.makeSomeNoise(); //panda.makeSomeNoise(); ..

Back-End/JAVA 2021.05.27

[Java] 상속(inheritance)

1) 상속의 목적 1. 기존에 선언된 클래스의 필드를 다른 클래스에서 사용하고자 할 때 2. 클래스들을 만들다 보니 공통 요소가 보여서 부모로 묶은 후 상속시켜 주어서 사용하고자 할 때 class A{ A의 필드 } class B extends A{ B의 필드 } B b = new B(); b 객체는 실제로는 A의 필드, B의 필드 둘 다 가지고 있다. A : 부모 클래스, 슈퍼 클래스, Car B : 자식 클래스, 서브 클래스, SuperCar 2) 자식클래스 객체화 자식 클래스 생성자 호출시 자식 클래스의 객체는 자식 생성자를 호출하여 객체화를 진행한다. 메모리에 자식 클래스의 필드만 올라갔다면 자식 객체로 부모 클래스에 있는 필드에 절대 접근할 수 없다. 따라서 자식 생성자를 호출하게 되면 제일 처..

Back-End/JAVA 2021.05.27

[Java] Static

static이 붙은 변수, 메소드, 구역 등은 프로그램 실행시 가장 먼저 메모리에 올라간다. static이 붙은 메소드는 내부에서 객체의 필드에 올라오는 일반 전역변수와 일반 메소드는 사용할 수 없다. (메모리에 아직 올라오지 않았기 때문에) 따라서 static이 붙은 전역변수, static이 붙은 메소드, 자기 자신 안에 선언된 지역변수만 사용할 수 있다. static이 붙은 전역변수, 메소드는 모든 객체가 공유한다. 따라서 static 필드는 클래스 이름으로 직접 접근이 가능하다. 실제로 공유해야 하는 값, 메소드에는 static을 붙여서 사용한다. (공유하지 않아야 하는 값들에는 무조건 static을 붙이면 안된다.) ex) Car class에서 wheel public class Car { Stri..

Back-End/JAVA 2021.05.24
반응형