본문 바로가기

[JAVA] 상속 A → B → C → D B' → C' B'' → C'' 변경을 하더라도 A, D 클래스가 에러가 없도록 만들고 싶다. (상속, 다형성) 상속을 표현할 때, EMPLOYEE (상위클래스, 수퍼클래스, 부모클래스) ↑ MANAGER (하위클래스, 서브클래스, 자식클래스) 자바에서는 ONLY 단일 상속만 지원한다. 하나의 서브 클래스가 가질 수 있는 상위 클래스는 오로지 하나이다. 더 필요한 것이 있다면 인터페이스로 보완하는 방식으로 자바는 지원하고 있다. (다중상속을 하게 되면 다른 클래스에서 같은 메소드를 하나의 클래스에서 사용할 수 있기 때문) 하위 클래스는 상위 클래스의 private 접근 제한자는 접근이 불가능. default, public, protected 만 접근이 가능하다. 일반적으로 thi..
[JAVA] static 키워드 1. 하나의 클래스에는 하나의 static 변수만 작용한다. 2. static 변수를 사용하기 위해서는 totalEmpCount 직접 클래스명을 적어준다. Employee.totalEmpCount 이런식으로! 3. 생성자를 호출할때마다 totalEmpCount를 증가시킨다. 4. static 변수를 사용하기 위해서는 메소드도 static으로 선언한다.
[JAVA] 접근제한자 일반적으로 멤버변수는 private, 함수는 public으로 선언하는 것이 일반적! 마우스 우클릭 - [sources] - [generate getter/setter] - 원하는 변수 체크하고 하기 set, get 메소드를 생성하여 private으로 선언한 변수에 접근을 하여 파일 내부에서 호출할 수 있다. 일반적으로 get 메소드는 모두 생성하고, set 메소드는 필요에 따라 만든다.
[JAVA] StringBuffer() , StringBuilder() 두 문자열 클래스의 아주 기본적인 차이는 String은 immutable(불변) StringBuffer는 mutable(변함)에 있습니다. 문자열, 숫자, char 등은 concat할때는 StringBuffer, StringBuilder를 사용할 수 있습니다. 단, 복잡한 경우 의미가 있고, 단순한 경우에는 굳이 StringBuffer, StringBuilder를 쓰지 않고 +연산자를 활용해 직접 합지면 됩니다. 왜 모두 1명? 이럴 때 static을 사용한다 객체가 각자 생성되고 totalEmpCount도 개별적으로 관리되기 때문에 static 으로 변수를 선언하면 클래스 당 하나의 변수가 관리되기 때문에.. 객체들은 별도로 인스턴스를 생성할 수 없다 totalEmpCount 같은 경우 static 변..
[JAVA] 문자열과 API 사용법 String은 고정된 문자열 String str = "Hello"; String str2 = new String("Hello"); 이 둘의 차이는 ??? 상수 문자열은 가비지 콜렉터가 지울 수 있는 부분이 아니다. 그래서 상수 문자열은 생성된 후 소프트웨어를 종료할 때까지 사라지지 않는다. 상수 문자열은 메소드 area에 잡히게 된다. new 로 생성하면 메모리가 관리가 가능한데, 상수 문자열을 지속하여 직접 저장하는 경우 메모리 부족 문제가 발생한다. 이거는 .txt 파일 찾거나 .c 파일을 찾거나 이럴 때 사용하는 String 내부 메소드 // 문자열을 탐색 -> 내가 찾고자 하는 문자가 어디 있는지 찾고 싶을때 문자열 변환을 한다고 하더라도 원본의 데이터는 변하지 않는다. 서브스트링도 오버로딩을 지..
[JAVA] 아이스크림 (분리) 컨트롤할 수 있는 클래스 IceCreamMarket.java를 생성하여 IceCream 배열을 해당 파일 내부에서 호출하여 호출자 메소드 (main) 의 코드를 간단하게 만들 수 있다. 하나의 클래스 내부에 지속해서 다른 클래스를 만들게 되면 안좋다. 그래서 그냥 무조건 클래스를 분리해서 작성하는걸 추천
[JAVA] 생성자(오버로딩, 초기화) 내가 원하는 인스턴스 객체를 정의할 수 있다! 이럴 경우 다음과 같이 출력돼! 생성자로 초기화를 해주게 되면 다음과 같이 고객의 입장에서 null은 모르므로 다음과 같은 코딩이 가능하다 왜 에러가 발생할까? 생성자 오버로딩을 했을 경우! JVM은 기본 생성자는 생성자가 하나도 없을 때 처리하지만 하나의 생성자라도 있으면 다음과 같이 기본 생성자에서 에러가 발생하는 것을 볼 수 있다. 이럴때는 다음과 같이 기본 생성자를 무조건 정의 해주어야 한다. 왜 에러가 뜨지? 생성자는 인스턴스 객체를 만들 때 임의의 값으로 초기화하기 위해 사용한다. 그런데 main에서 new("박길동",20) 이라는 호출을 했는데 세 개 짜리 너가 해라고 시키고 싶은데 만들어진거에서 역할을 넘기고 싶을때는 클래스명을 쓰는 것이 아니..
[JAVA] 객체 배열 사용하기 입력 받을 때 마다 students[i] = new Student(); 해주어야 함 일반적으로 sc.nextLine() 은 입력을 받은 이후 사용하는 것이 일반적이라서 integer를 입력 받고 sc.nextLine() 을 해주어야 함. 여기서 파란색은 스택 영역이고, 나머지는 모두 힙 메모리 "비비빅", "월드콘" 도 힙에 있음. 참조변수를 배열로 만든다! ---- null 값을 가지고 있는 참조 변수 배열을 생성한다 (1) ---- 인스턴스 객체를 생성 이렇게 먼저 소스를 작성할수도 있음! 입력할 때는 입력 버퍼를 사용한다. → 키보드 입력 정수와 실수를 입력 받을 때 문제가 생기는데, 이러한 문제를 해결하기 위한 꼼수 sc.nextLine() 이 필요! nextInt() 는 sc.nextLine()..