[JAVA] 추상클래스 (abstract) 일반적으로 Interface - 추상클래스 ← 구현클래스 와 같은 구조로 프로그램을 작성함 (상속) (상속) ** 추상클래스 → 작업에 대한 표준화 메소드를 표준으로 만드는 것 강아지 , 고양이 , 햄스터 ?? ex) 먹이를 준다, 목욕을 시킨다 등등 하나 이상의 추상 메소드를 가진 클래스를 추상 클래스 추상 메소드란 ? 구체적인 내용은 없고, 기능(이름)만 명시한 메소드! 메소드의 선언부만 있고 괄호가 없다. 행위에 대한 기술이 없다. 어떤 작업을 할지 모른다. abstract 라는 키워드는 멤버 변수에 붙을 수 없다!!!!!!!!!!! 클래스와 메소드에만 abstract 라는 키워드를 붙일 수 있다. (추상클래스, 추상메소드) 그러므로 추상 클래스를 이용해서는 인스턴스 객체를 만들 수 없다. 추상 클.. [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) 이라는 호출을 했는데 세 개 짜리 너가 해라고 시키고 싶은데 만들어진거에서 역할을 넘기고 싶을때는 클래스명을 쓰는 것이 아니.. 이전 1 2 3 4 5 다음