상속 상속은 두 클래스 간의 관계를 의미한다 자식 클래스가 부모 클래스를 상속한다(extends) 자식 클래스는 부모 클래스의 필드와 메서드를 상속받는다 자식 클래스는 단 하나의 부모 클래스만을 가질 수 있다 자식 클래스 내에서 부모의 객체에 접근할 때는 super 키워드를 사용한다 자식 생성자에서는 반드시 부모 생성자를 먼저 호출해야 한다 자식 생성자에서 this()나 super() 를 호출하지 않으면 컴파일러가 super() 를 첫 줄에 삽입한다 ** 자바는 다중 상속이 안 됨(하나만 가능) -> 이 때 대안이 없을까? ==> 있다. 인터페이스 ** 인터페이스는 다중 상속에 대한 제약조건이 따로 없다. 다음을 잘 살펴보면, interface Parent{ void m2(); } interface Gr..
Static vs Non-static **클래스 필드(static field)** - 클래스 필드는 클래스의 인스턴스가 아닌 클래스 자체와 연관 public class MainClass { public static final String TOP_MANAGEMENT = "top"; public static void main(String[] args) { String topManagement = MainClass.TOP_MANAGEMENT; // 객체를 만들지 않아도 바로 받을 수 있다. // 왜냐면 얘는 인스턴스에 붙는 게 아니라 // static 키워드를 보면 알 수 있듯이 클래스에 붙는다는 걸 알 수 있지. public class MainClass { String name; public static f..

클래스 클래스는 하나의 데이터 타입을 만드는 것이고, 자바 컴파일러가 모든 타입을 만들어 줄 수는 없으니 현실의 문제를 풀 때마다 우리가 데이터 타입을 하나씩 만들어준다는 개념 클래스 하면 빼놓을 수가 없는 게 생성자 생성자 - 쉽게 말하면, 객체를 만들 때 불리는 함수. - 스프링 개념을 조금 섞자면, JPA에서 엔티티로 관리할 클래스는 기본 생성자가 반드시 있어야 한다. - 기본 생성자는 인자도 없고 메서드 본문도 없는 소위 "깡통" 같은 것. - 모든 클래스는 생성자를 반드시 하나는 가지고 있어야 하기 때문에 자바 컴파일러가 기본으로 만들어준다. - JPA에서는... JPA는 객체 세계와 데이터베이스 세계를 매핑해주는 아이기 때문에 기본 생성자를 제공해야 함. 생성자 활용 (1) 객체가 생성되자마자..

1. main문만 짜기 import java.util.Scanner; public class StarAndGugu { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while (true) { System.out.println("[원하시는 메뉴를 선택하세요]"); System.out.println("1. 구구단 출력"); System.out.println("2. 별 찍기 출력"); System.out.println("3. 종료"); System.out.print("번호 선택 > "); int num = sc.nextInt(); if(num == 1) { System.out.println("[다음 중에서 고르시오]"..

Call by Value 예시 package Sample // 어떻게 보면 자바에서는 그냥 통칭하여 call by value라고 할 수도 있음. /* 예시, swap이란 함수를 써서 값을 바꾸기만 했으면 좋겠다. */ public class CallbyExample { static void swap(int a, int b) { int temp = a; a = b; b = temp; System.out.println(a); // 20 출력 System.out.println(b); // 10 출력 } public static void main(String[] args) { int a = 10; int b = 20; swap(a, b); System.out.println(a); // 10 출력 System.o..
소스코드 public class Q2 { static String inputString() { Scanner sc = new Scanner(System.in); System.out.print("문자열 입력하세요 : "); return sc.next(); } static int inputNum() { Scanner sc = new Scanner(System.in); System.out.print("1. 짝수 2 홀수 : "); return sc.nextInt(); } static void printHJ(int num,String str) { for(int i = num-1;i
소스코드 public class Q3 { // 주고 안받고 static int makeRandom() { Random r = new Random(); return r.nextInt(26); } // 주고 받고 static int intSum(int r) { return 65 + r; } // 주고 받고 static char makeChar(int result) { return (char)result; } // 안주고 안받고 static void run() { String result = ""; for(int i = 0;i