1. 추상 클래스 상속을 위해 만든 부모 클래스의 메소드는 상속을 목적으로 했을 뿐 해당 클래스에서 별다른 기능을 하진 않음. => 굳이 부모 클래스에 있을 필요가 없음. 메서드 구현 없이 메서드 선언만 하면 됨. ----- 구현은 하위클래스에서 맘대로 해~ 추상 클래스: 추상 메서드를 1개라도 포함한 클래스. abstract 키워드 사용. -- 모든 메서드가 다 추상일 필요 X 추상 메서드: 구현하지 않고 선언만 한 메서드. abstract 키워드 사용. => 완성이 안 됐기 때문에 객체 생성 불가 ==> 하위 클래스에 상속을 목적으로 함. ==> 하위 클래스에 아웃라인(틀) 제공 -- 하위 클래스에 추상 메서드를 제공하여 각 하위 클래스마다 적합하게 재정의해 사용할 수 있도록 함. //추상 클래스 a..
● 전체 코드 (강사님 ver.) 더보기 package product; import java.util.Scanner; public class ProductsService { private Products[] prods = new Products[30]; private int cnt; // 제품 개수 카운트 변수 public ProductsService(int size) { prods = new Products[size]; // size 만큼 방을 만든다. } // 새 상품 등록 public void addProduct(Scanner sc) { if (cnt >= prods.length) { // cnt: 제품수, prods.length: 방의 개수 System.out.println("배열이 다 찼습니다...
VO - 포켓몬 클래스(부모) 멤버변수 : int hp, exp = 0, lv = 1; String name(캐릭터 이름); - 자식 클래스 (부모 상속) 피카츄 꼬부기 이상해씨 ----- 각 클래스 생성시 생성창 browse 에서 상속받을 클래스 추가 메서드: 밥먹기(), 잠자기(), 운동하기(), 놀기(), 상태확인(), 레벨업() ------ 캐릭터마다 hp, exp 할당량 다르게. Service 메뉴 1.밥먹기 2.잠자기 3.운동하기 4.놀기 5.종료 6. 상태확인 메인 캐릭터 선택 >> 1.피카츄 2.꼬부기 3.이상해씨 캐릭터 생성 -> 메뉴 선택 ▼ 강사님 모범답안 VO (객체 설정창) ▼ 포켓몬 (부모클래스) package picachu; //피카츄 꼬부기 이상해씨한테 상속해주려고. (공통점..
1. 상속 - 자바의 모든 클래스는 object 클래스 (부모클래스) 를 상속받음. - object 클래스는 toString을 갖고 있음. (equals도!) - toString(): 객체 설명 메서드. 객체의 중요 정보를 하나의 문자열로 반환. : 여러 클래스가 공통점이 있을 때, 이 공통적인 필드를 뽑아서 상위 클래스로 만들고 이를 상속받도록 만드는 기법. --- 반복을 줄이고 코드 재사용성을 높이는 방법! ====> 다형성 - 추출한 객체 샘플들 중에서 중복 내용이 많은 객체들을 추출 => 이 객체의 공통점을 뽑아서 부모 클래스로 만들고, 이 클래스를 상속받아 확장하는 형태로 구현 actor 1 (학생) - 번호, 이름, 전화, 학과, 수강과목 actor 2 (교수) - 번호, 이름, 전화, 학과,..
1. 접근 제어자 : 클래서, 메서드, 멤버 변수 들을 어디까지 접근할 수 있도록 허용할 것인지 결정 클래스: default, public 메서드/멤버변수: private(멤버변수), default, public, protected private --- 클래스 안에서만 보임. (클래스 밖에서는 사용 불가, 상속 불가) -- 은닉성 제공 (데이터 보호) - 클래스 밖에서 직접적으로 값을 보거나 수정할 순 없지만, 우회적으로 public 메서드인 setter와 getter로 값 수정 가능. default --- 키워드없음. 다른 클래스에서도 사용 가능하지만, 같은 패키지에 있는 클래스에서만 보임 public --- 같은 & 다른 패키지 모두 보임. (전체오픈) (메소드) protected --- 같은 패키지..
class = 멤버변수(값 저장) + 메서드(기능) 1. 생성자 (constructor) - 역할: 객체 초기화 메서드 - 이름: 클래스와 동일 - 반환타입 없음 - 파라메터는 있을 수도 있고 없을 수도 있음. -> 있는 경우 파라메터의 타입과 개수를 맞춰 호출해야 함. - 생성자를 작성하지 않아도 컴파일러가 자동으로 생성해줌. but, 생성자를 하나라도 작성하면 자동생성 안됨. - 생성자는 마음대로 호출할 수 없고 객체 생성시에만 호출 & 실행 가능하다. (함수(메소드)는 호출할 때마다 실행) 예시1. 파라메터 없는 생성자 (디폴트 생성자) class Member2 { String name, tel, addr; //생성자 작성 Member2() { System.out.println("생성자"); nam..
1. class 써서 학생 점수 ▼ 나 ㅋㅋㅋㅋ ㅠ 출력 안됨 ㅠ ---- class에서 배열 선언만 하고 생성을 안함. >> class에서도 똑같이 써야함. int[] score = new int[5]; ---- 배열을 출력하려면 루프 써야 함. ---- 배열 초기화 코드는 선언 시에만 가능하고, 그 이후에는 안 됨. int[] score = new int[5]; s2.score = { 1, 70, 80, 40, 0 } //error!! class Student { String name; int[] score;//번호, 국, 영, 수, 총합 float avg; } public class Oop_student { public static void main(String[] args) { // TODO Au..
구구단 3단 출력 약수 구하기 ... 구구단 5단 출력 >> 같은 코드를 반복해서 사용하면 코드 사이즈가 너무 커지고 유지보수가 어려워짐 >> 번거로움 >>> 코드를 모듈화해서 사용 >> 함수 1. 함수 : 기능. 자주 사용되는 코드를 따로 분리해서 필요할 때마다 호출해서 사용하는 방법. but, 자바는 함수가 없고 메서드만 존재. (메서드: 클래스 안에 있는 함수) : 원하는 값을 받아서(입력)(파라메터: 함수가 밖에서 필요한 값을 받아오는 변수) --> 여러 수식으로 처리해서 (기능) --> 원하는 형태로 print (출력)(return문을 통해서 값 반환) (return res(변수명); ) return; -----> 현재 메서드 종료 return a; ----> 결과값 반환하고 종료 함수 정의는 ..