본문 바로가기

Study/Java

(26)
객체지향 프로그래밍 7장(30강 ~ 35강) ★다형성(polymorphism)★ - 여러 가지 형태를 가질 수 있는 능력 - 조상 타입 참조 변수로 자손 타입 객체를 다루는 것 Tv t = new SmartTv(); // 타입 불일치 OK!! 객체와 참조 변수의 타입이 일치할 때와 일치하지 않을 때의 차이? SmartTv s = new SmartTv(); // 참조 변수와 인스턴스의 타입이 일치 Tv t = new SmartTv(); // 조상타입 참조변수로 자손 타입 인스턴스 참조 SmartTv인스턴스 -> 멤버 7개 모두 사용 가능 SmartTv 인스턴스 -> 멤버는 7개인데 5개 사용가능 일부만 사용할 수 있는데 뭐가 장점일까?? - 일단 차이만 이해하도록 하자. 다형성(polymorphism) 특징 - 자손 타입의 참조 변수로 조상 타입의 ..
객체지향 프로그래밍 7장(25강 ~ 29강) 패키지(package) - 서로 관련된 클래스의 묶음(Java8 기준으로 약 4000개 클래스) - 클래스는 클래스 파일(*. class), 패키지는 폴더. 하위 패키지는 하위 폴더 - 클래스의 실제 이름(full name)은 패키지를 포함.(java.lang.String) - 클래스 파일을 묶어놓은 것 jar 파일.. Java9부터 rt.jar 파일은 사라지고 module개념으로 변경 - 패키지 소스파일의 첫 번째 문장으로 단 한번 선언 package com.seulgae.ch07; - 같은 소스 파일의 클래스들은 모두 같은 패키지에 속하게 된다. - 패키지 선언이 없으면 이름없는(unnamed) 패키지에 속하게 된다. 컴파일러로 실행할때, C:\jdk11\work> java com.seulgae.ch..
객체지향 프로그래밍 7장(20강 ~ 24강) 상속(Inheritance) - 기존의 클래스로 새로운 클래스를 작성하는 것.(코드의 재사용) class 자식클래스 extends 부모클래스{ // ... } - 두 클래스를 부모와 자식으로 관계를 맺어주는 것. class Parent { } //부모클래스 class Child extends Parent{ // Child 클래스에 Parent 클래스를 상속받는다. // ... } - Child 클래스와 Parent 클래스는 상속관계에 있다고 이야기한다. - 자손은 조상(부모의부모)의 모든 멤버를 상속받는다.(생성자, 초기화블럭 제외) - 자손의 멤버 개수는 조상보다 적을 수 없다.(같거나 많다.) class Parent{ int age; } class Child extends Parent{ // 자신의 ..
객체지향 프로그래밍 6장(16강 ~ 19강) 오버로딩(overloading)이란? - 한 클래스 안에 같은 이름의 메서드 여러 개 정의하는 것 우리가 평소에 쓰던 println println(1234); println("ABC"); 오버로딩이라는 기능이 있어서 매개변수를 참조하여 해당되는 메서드를 호출한다. 오버로딩이 성립하기 위한 조건 3가지 - 메서드 이름이 같아야 한다. // 오버로딩 아님, 메서드 중복정의 int add(int a, int b) { return a+b; } int add(int x, int y) { return x+y; } - 매개변수의 개수 또는 타입이 달라야 한다. - 반환 타입은 영향없다. //오버로딩x 반환타입은 영향없다. //결론은 이것도 중복정의.. int add(int a, int b) { return a+b; ..
객체지향 프로그래밍 6장(11강 ~ 15강) return문 - 실행 중인 메스드를 종료하고 호출한 곳으로 되돌아간다. - 반환 타입이 void라면 생략 가능하다. package com.seulgae.ch06; public class printGugudan { void printGugudan(int dan) { if(!(2
객체지향 프로그래밍 6장(6강 ~ 10강) 클래스의 또 다른 정의 클래스는 3가지로 정의할 수 있다. 1. 클래스는 설계도이다. 2. 클래스는 데이터 + 함수의 집합이다. 객체지향 언어에서는 변수와 함수를 하나의 클래스에 정의하여 서로 관계가 깊은 변수와 함수들을 함께 다룰 수 있게 했다. a. 변수 : 하나의 데이터를 저장할 수 있는 공간 b. 배열 : 같은 종류의 여러 데이터를 하나로 저장할 수 있는 공간 c. 구조체 : 서로 관련된 여러 데이터(종류 관계 x)를 하나로 저 정할 수 있는 공간 d. 클래스 : 서로 관련 있는 데이터와 함수(명령문 묶음)의 결합(구조체 + 함수) 3. 클래스는 사용자가 원하는 타입을 직접 만들 수 있다. class Time{ int hour; int minute; float second; } 시, 분, 초를 저..
객체지향 프로그래밍 6장(1강 ~ 5강) OOP(Object-Oriented Programming) 객체지향 언어 = 프로그래밍 언어 + 객체지향개념(규칙) 참고. 객체지향 이론의 기본 개념은 '실제 세계는 사물(객체로)' 이루어져 있으며, 발생하는 모든 사건들은 사물 간의 상호작용이다. 실제 사물의 속성과 기능을 분석 후 데이터(변수)로 정의함으로써 실제 세계를 컴퓨터 속에 옮겨 놓은 것과 같은 가상 세계를 구현하고 이 가상세계에서 모의실험을 통해 많은 시간과 비용을 절약할 수 있다. 객체지향 핵심 개념(캡 상추다!) 캡슐화(Encapsulation)? - 객체의 속성과 행위를 하나로 묶고 구현 내용을 외부에 감춘다. - 정보은닉(Information Hiding) 상속(Inheritance)? - 부모 클래스의 변수/메서드를 자식 클래스가 ..
Java18_멀티스레드 [Multi Thread 멀티 스레드] 1. 스레드와 멀티 스레드의 개념 ‣ 프로그램은 main(); 메소드의 첫 째 명령문부터 시작되어 return; 문을 만나면 종료되는데, 이렇게 하나의 실행 흐름을 갖는 프로그램을 싱글 스레드 프로그램(single thread program)이라고 합니다. 그러므로 main(); 메소드도 하나의 스 레드가 되며 메인 스레드라고 합니다. 이에 비해 멀티 스레드 프로그램(multi thread program)은 메인 스레드 외에 동 시에 실행되는 다른 메소드를 가져야 합니다. ‣ 멀티 스레드 프로그램은 메인 스레드가 시작된 후 메인 스레드가 종료되기 전, 메인 스레드에서 다른 스레드를 시작하게 만들어야 합니다. 그리고 메인 스레드가 끝나더라도 다른 스레드가 끝나지 않으..