-
KOSA - 3일차 Java 기초KOSA 2024. 3. 28. 19:53728x90
아직 자바 초기라서 교수님께서 앞에서 배웠던 내용을 자주 리마인드하는 방식으로 수업이 진행되어서 나도 그거 맞게 블로깅을 해보겠다.
What is an object?
- software bundle
What Is Inheritance?
- 기존의 클래스를 재활용하여 새로운 클래스를 작성하는 자바의 문법 요소
What is Polymorphism?
- 하나의 객체가 여러 가지 형태를 가질 수 있는 것을 의미
- 혹은 상위 타입(클래스 혹은 인터페이스)의 참조 변수로 하위 타입의 모든 객체를 참조할 수 있다.
- What Is an Interface?
- 내용이 없는 메서드를 가지고 있다고 보면 된다.
- What Is a Package?
- 식별자를 주고 싶은 목적이 크다.(- 식별자(Identifier) : https://blog.naver.com/gseducation/222326026753)
- 식별을 하기 위해, 즉 다른 것과 구분하기 위해서라고 생각하면 될 거 같다.
- A package is a namespace for organizing classes and interfaces in a logical manner
What is a driver class? (Java)
- main class를 포함하는 클래스
https://stackoverflow.com/questions/765751/what-is-a-driver-class-java
What is a "driver class"?
I was reading through a Java textbook, and it mentions something called a "driver class". What is it, and how is it different from a normal class?
stackoverflow.com
Control Flow Statements
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/if.html
The if-then and if-then-else Statements (The Java™ Tutorials > Learning the Java Language > Language Basic
The Java Tutorials have been written for JDK 8. Examples and practices described in this page don't take advantage of improvements introduced in later releases and might use technology no longer available. See Java Language Changes for a summary of updated
docs.oracle.com
decision-making statements : if, switch
사실 if, switch, for 등과 같은 반복 제어문 같은 경우에는 김영한 강의에서 본 것들로 이미 블로깅(JAVA 카테고리에 있음) 해놓은 것들이 있어서 생략하도록 하고
이번에 처음 보았던 break문과 결합한 label 기능을 한번 짚고 넘어가자.
주로 언제 쓰이냐??
- 2중 for문 같은 경우 그냥 break를 써서 빠져나가기가 어떻게 보면 좀 귀찮은데, label을 사용하면 쉽게 빠져나갈 수 있다.
label의 기능
- 반복문 앞에 위치해 break 또는 continue 동작 지점을 지정
- break문 또는 continue문 뒤에 해당 레이블의 이름을 지정할 경우 레이블 위치 다음 반복문에 break문 또는 continue문이 적용됨
- 주로 중첩 반복문에서 반복문을 한번에 빠져나가기 위해 사용
- 반복문 앞 또는 위에 주로 대문자로 된 문자를 작성하고 콜론 붙임
< 기본 문법 > 레이블명: 바깥쪽 반복문() { 안쪽 반복문() { if(조건식) { break 레이블명; 또는 continue 레이블명; } } }
사용한 예시(break 사용)
EXIT_FOR: //레이블명 for(int dan = 1; i <= 9; i++) { System.out.println(" < " + dan + "단 > "); for(int i = 1; i <= 9; i++) { if(dan ==5) { break EXIT_FOR; } // if문 종료 System.out.printf("%d * %d = %d\n", dan, i, dan*i); } // 안쪽 for문 종료 ] // 바깥쪽 for문 종료
사용한 예시(break 사용)
EXIT_FOR: //레이블명 for(int dan = 1; i <= 9; i++) { System.out.println(" < " + dan + "단 > "); for(int i = 1; i <= 9; i++) { if(dan ==5) { continue EXIT_FOR; } // if문 종료 System.out.printf("%d * %d = %d\n", dan, i, dan*i); } // 안쪽 for문 종료 ] // 바깥쪽 for문 종료
hashing의 목적은 찾기 쉽게 하려고 하는 변환이다.
절차지향 vs 객체지향 또한 Java 카테고리에서 다뤘던 적이 생략하겠다.
무작정 변수라는 것을 생각하면 여러가지가 떠오르겠지만, 변수를 두 가지 기준으로 나눠볼 수 있다.
- 원시형 변수
- 참조형 변수
그리고
- 인스턴스 변수(필드)
- 클래스 변수(정적 필드)
- 지역 변수
- 파라미터
그리고 상속에 대해 코드를 통해 다뤄보았다. 상속의 개념에 대해 자세히 알아보자.
1. 상속의 개념
- 상속이란 기존 클래스의 변수와 메소드를 물려받아 새로운 클래스(더 나은, 더 구체적인 클래스)를 구성하는 것
- 이러한 상속은 캡슐화, 추상화, 다형성과 더불어 객체지향프로그래밍을 구성하는 특징 중 하나이다.
- 쉽게 이해해보자면 현실세계에서 부모의 생물학적 특성을 자식이 물려받는 유전과 비슷하다고 생각할 수도 있다.
2. 상속의 필요성
- 기존 클래스의 변수와 코드를 재사용할 수 있어 개발 시간이 단축된다.
- 먼저 작성된 검증된 프로그램을 재사용하기 때문에 신외성 있는 프로그램을 개발할 수 있다.
- 클래스 간 계층적 분류 및 관리가 가능하여 유지보수가 용이
3. 클래스 상속
상속 선언
- 부모클래스를 슈퍼 클래스, 상속받는 자식 클래스를 서브클래스라고 부른다.
- 상속을 선언할 때는 extends 키워드를 사용한다.
예시 코드를 보자.
public class Phone { public void call() { System.out.println("전화를 건다."); } public void send(){ System.out.println("전화를 받는다."); } }
하나의 슈퍼클래스를 만들어두고, 이 것을 이용해서 서브클래스를 만들어보자.
public class SmartPhone extends Phone { public void wifi(){ System.out.println("와이파이 실행"); } }
- 스마트폰 클래스는 전화기 클래스의 call(), send() 기능을 물려받으므로 스마트폰 클래스에서 메소드를 다시 반복하여 작성할 필요 없다.
- 스마트폰의 추가 기능인 wifi() 메소드를 작성하면 된다.
이 것을 사용하는 main 클래스를 보자.
public class PhoneMain { public static void main(String[] args) { Phone p1 = new Phone(); p1.call(); p1.send(); SmartPhone p2 = new SmartPhone(); p2.call(); p2.send(); p2.wifi(); } }
4. 상속의 특징
- 자바에서는 클래스의 다중상속을 지원하지 않는다.
- 클래스를 여러개 상속받는 다중상속을 지원하지 않으므로 extends 다음에는 하나의 클래스만 지정할 수 있다.
- 자바에서는 상속의 횟수에 제한을 두지 않는다.
- 자바에서 계층구조의 최상위에 java.lang.Object 클래스가 있다.
- 자바에서 모든 클래스는 Object 클래스를 자동으로 상속받도록 되어 있다.
- toString(), equals()와 같은 메소드를 바로 사용할 수 있다.
'KOSA' 카테고리의 다른 글
KOSA - 6일차 Java 기초 | 생성자 (0) 2024.04.04 KOSA - 5일차 - 2 Java 기초 | 객체 지향을 적용한 디자인 패턴(전략 패턴) (0) 2024.04.02 KOSA - 5일차 - 1 Java 기초 | 다형성, 인터페이스 (0) 2024.04.02 KOSA - 4일차 - 2 Java 기초 | 상속 (0) 2024.03.29 KOSA - 4일차 - 1 Java 기초 | Array, Method, 메모리 구조, String메서드 (1) 2024.03.29