9_2 . 다형성 _ 추상클래스/ 추상메소드
2022. 11. 3. 16:50
JAVA
* 추상메소드 - 미완성된 메소드로 몸통부({})가 구현되어있지 않은 메소드 - 자식 클래스에서 해당 메소드를 오버라이딩해서 완성시켜야함 * 추상클래스 - 미완성된 클래스 - 객체 생성 불가 ( 단, 레퍼런스로는 사용가능 , 다형성 적용 가능) - 일반 멤버변수 + 일반 메소드 [+ 추상메소드] => 추상메소드 없이도 추상클래스 가능 ( 추상메소드 생략가능) *추상메소드 없어도 추상클래스로 선언가능 //추상메소드(미완성된 메소드) , 자식클래스에서 오버라이딩 해서 완성시켜야함 (강제성) public abstract void rule(); 추상메소드 추가하는 순간 -> 추상 클래스로 적용하기 public abstract class Sports { // 특정클래스 안에 추상메소드가 있으면 추상클래스 선언해야..
9_1 .다형성
2022. 11. 3. 16:45
JAVA
* 다형성의 정의 - 상속구조에서 부모타입으로부터 파생된 여러타입의 자식 객체들을 부모타입 하나로 다룰 수 있는 기술 * 다형성을 쓰는 목적(장점) - 코드 길이 감소 - 클래스 형변환 업 캐스팅(Up Casting) : 부모 타입의 참조형 변수가 모든 자식 타입의 객체 주소를 받을 수 있음 (자식타입 --> 부모타입 으로 자동 형변환) 다운캐스팅 (Down Casting) : 자식 객체의 주소를 받은 부모 참조형 변수를 가지고 자식의 멤버를 참조해야할 경우 , 부모 클래스 타입의 참조형 변수를 자식 클래스 타입으로 형변환 하는 것 (부모타입 --> 자식타입으로 강제 형변환) * 다형성을 사용하는 이유 * 1. 부모타입의 배열로 다양한 자식객체들을 받을 수 있음 * 2. 메소드 정의시 다형성 개념을 적용..
8_2. 상속 오버라이딩
2022. 11. 2. 16:17
JAVA
* 오버라이딩 - 상속받고있는 부모클래스의 메소드를 자식클래스에서 재정의하는 것 => 부모가 제공하고있는 메소드를 자식이 일부 고쳐서 사용하겠다는 것을 의미 *오버라이딩 성립 조건 -부모클래스 메소드명과 동일 -매개변수 갯수, 자료형, 순서 동일 -부모메소드의 반환형 동일 (jdk버전 업 되면서 부모메소드 반환형의 자식 자료형들까지 가능) -부모메소드의 접근제한자보다 같거나 커야함. ex) 부모메소드가 protected일 경우 오버라이딩 메소드는 protected, public가능 *@Override 어노테이션 -생략가능함 , 크게 상관없음 -어노테이션 붙이는걸 권장 >> 자식메소드 기술시 오타가 있을경우 -> 오류발생 부모메소드가 변경됐을 경우 -> 오류발생 >> 단지 이 메소드가 오버라이딩 된 메소드..
8. 상속
2022. 11. 2. 12:42
JAVA
* 상속이란 : 부모(상위) 자식(하위)간의 구조로 클래스를 구성하는 것으로 다른 클래스가 가지고 있는 필드 및 메소드들을 새로 작성할 필요 없이 마치 내 것 처럼 사용할 수 있는 기술 * 상속의 장점 -공통적인 코드들을 부모 클래스에 한번 정의 해두면 새로운 클래스 작성시 적은 양의 코드로 작성 가능 -중복된 코드를 별도로 관리하기 때문에 코드의 추가나 변경이 용이 (프로그램의 생산성과 유지보수에 크게 기여) * 표현식 [접근제한자] class (하위)클래스명 extends (상위)클래스명{} ㄱㅇ - 부모클래스 Product 필드 private String brand; private String pCode; private String pName; private int price; // 자식 -----..

7. 객체 배열
2022. 10. 31. 16:33
JAVA
객체를 저장하는 배열로 배열의 자료형을 클래스명(사용자 정의 자료형 ) 으로 지정하여 활용 *객체 배열 선언 클래스명[] 배열명 ; 클래스명 배열명[]; *할당 배열명 = new 클래스명[배열크기]; *선언과 동시에 할당 클래스명 배열명[] = new 클래스명[배열크기]; ex) Academy[] arr = new Academy[5]; *인덱스를 이용한 초기화 배열명[i] = new 클래스명(); ex)arr[0] = new Academy(1, "강남"); arr[1] = new Academy(2, "구로"); *선언과 동시에 할당 및 초기화 클래스명 배열명 [] = {new 클래스명(), new 클래스명() }; ex) Academy arr[] = { new Academy(1, "강남"), new Ac..
6_8. 객체 _ 메소드 오버로딩
2022. 10. 27. 18:42
JAVA
오버로딩 : 한 클래스 내에 동일한 이름의 메소드명으로 정의할 수 있는 것 - 오버로딩 조건 1. 같은 메소드명2. 매개변수의 개수, 타입, 순서가 달라야함 ( 매개변수명, 반환타입은 상관없음) public void test() { } public void test(int a) { } public void test(int a, String s) { } public void test(String s, int a) { } public void test(int a, int b) { } //public void test(int c,int d) { //매개변수명은 중요하지않고 자료형이 중요 //} 3. 반환형, 접근제한자도 중요하지 않음 (매개변수가 중요) public void test(String str) { ..
6_7. 객체_ 메소드 예약어 Static
2022. 10. 27. 18:41
JAVA
static : 메소드 선언시 작성할 수 있는 예약어 (static영역에 할당하여 객체 생성없이 사용) 예시1 ) 매개변수 없고 반환값 없는 메소드 public static void method1() { System.out.println("매개변수와 반환값 둘다 없는 static메소드 입니다."); } 예시 2) 매개변수 없고 반환값은 있는 메소드 public static int method2() { System.out.println("매개변수 없고 반환값은 있는 static 메소드 입니다."); //1부터 랜덤값 (1~100)까지의 총 합계 int random = (int)(Math.random()*100 + 1); int sum = 0; for(int i=1; i
6_6. 객체 _ 메소드
2022. 10. 27. 18:38
JAVA
1. 메소드란 - 수학의 함수와 비슷하며 호출을 통해 사용, 전달 값이 없는 상태로 호출하거나 어떤값을 전달하며 호출을하며, 함수 내에 작성된 연산 수행, 수행후 반환값/ 결과값은 있거나 없을 수 있음 [표현법] 접근제한자[예약어] 반환할값의자료형(반환형) 메소드명([매개변수,매개변수,..]) { 수행내용; [return 결과값;] } //예시 public void information(){ System.out.println(studentNo); } 2. 메소드 접근 제한자 +public : 전체 접근 가능 #protected : 같은 패키지내 접근가능, 패키지 다를경우 자손클래스 접근가능 ~(default) : 같은 패키지 접근가능 -private : 같은 클래스 내에서만 접근 가능 3. 메소드 예약..
6_5. 객체_ 생성자
2022. 10. 27. 18:34
JAVA
1 .생성자란 - 객체가 new연산자를 통해 Heap메모리 영역에 할당될 때 객체안에서 만들어지는 필드 초기화 - 생성자는 일종의 메소드로 전달된 초기값을 받아서 객체의 필드에 기록 2. 생성자 명명규칙 생성자의 선언은 메소드 선언과 유사하나 반환값이 없으며 생성자명을 클래스명과 똑같이 지정해야함 [표현법] public 클래스명 ([매개변수,매개변수,..]) { } * 생성자를 작성하는 목적 1. 객체 생성해주기 위한 목적 2. 객체 생성과 동시에 각 필드에 값을 대입할 목적 * 생성자 작성시 주의사항 1. 반환형이 존재하지 않음 2. 반드시 생성자명은 클래스명과 동일해야함 3. 매개변수 생성자를 명시적으로 작성할 경우 기본생성자를 JVM이 자동으로 만들어주지않음 -> 기본 생성자는 항상 작성하는 습관 ..
6_4. 객체 _필드
2022. 10. 26. 16:33
JAVA
필드표현식 [접근제한자] [예약어] class 클래스명{ [접근제한자] [예약어] 자료형 변수명 [=초기값]; } 1. 변수선언 위치에 따른 구분 >>변수 구분 - 전역변수 : 클래스영역 안에 바로 선언한 변수 => 클래스 내에서 어디서든 전역으로 사용가능 - 지역변수 :클래스 영역내의 어떤 특정한 구역({})에 선언된 변수 => 선언된 해당 그지역에서만 사용가능 *특정한 구역 : 메소드 {},제어문(if,for)등등 1. 전역변수 - 멤버변수 == 인스턴스변수 생성시점 : new 연산자를 통해서 객체 생성시 소멸시점 : 객체 소멸시 같이 소멸 - 클래스 변수 == static변수 생성시점 : 프로그램 실행과 동시에 무조건 메모리영역(static)에 할당 소멸시점 : 프로그램 종료될때 소멸 2. 지역변수..