본문 바로가기

Java29

객체지향의 기본 개념 정리2 2. 객체지향언어ⅱ A. 상속 형식: 자손클래스 extends 조상클래스{ ... } | class children extends class parents { ... } 기존 클래스로 새로운 클래스를 작성하는 것(코드의 재사용) 두 클래스를 부모와 자식으로 관계를 맺어준다. 자손은 조상의 모든 멤버를 상속 받는다(단, 생성자와 초기화 블럭은 제외) 자손의 멤버수는 조상의 멤버수보다 작을 수 없다(같거나 많아야 한다) a. 단일 상속 Java는 단일상속(하나의 조상=부모만 상속한다) 비중이 높은 클래스만 상속하고 나머지는 포함관계로 한다. B. 포함관계 클래스의 멤버로 다른 클래스 타입의 참조변수를 선언하는 것. 작은단위의 클래스를 만들고 이들을 조합하여 클래스를 만든다. - 클래스간 관계 결정하기. ① .. 2021. 7. 19.
객체지향의 기본 개념 정리1 1. 객체지향언어ⅰ 특징 코드의 재사용성이 높다. 유지보수가 용이하다. 중복코드 제거에 용이하다. 핵심개념 다형성 상속 추상화 캡슐화 A. 클래스와 객체 클래스 클래스 : 클래스는 객체를 정의해 놓은 설계도의 개념으로 객체를 생성하기 위해서 존재한다. 형태 : 데이터 + 함수의 형태로 이루어져 있으며 서로 관련된 여러 데이터를 하나로 저장할 수 있는 공간. 사용자 정의 타입 : 사용자가 원하는 타입을 직접 만들 수 있다. 객체 객체 : 객체란 인스턴스 변수(iv)의 묶음으로, 실제로 존재하는 것. 용도는 기능과 속성에 따라 다르다. 클래스에서 객체를 생성할 때를 일컬어 '인스턴스화'라고 말한다. 객체 생성 방법 : 클래스명 참조변수명 = new 클래스명(); | ex) People p = new Peop.. 2021. 7. 14.
캡슐화 보호되어 있는 글 입니다. 2021. 7. 5.
인터페이스(interface) 1. 인터페이스(interface) 인터페이스는 일종의 추상 클래스다. 인터페이스는 추상클래스처럼 추상메소드를 지니고 있지만 추상클래스보다 추상화의 정도가 높아 추상클래스와는 달리 구현부를 갖춘 메소드나 멤버변수를 가질 수 없다. 오직 추상메소드와 상수만을 멤버로 가질 수 있다(JDK1.8에서부터 기본 default 메소드와 static 메소드도 지닐 수 있게 되었다) 이러한 인터페이스를 보면 '미완성'된 형태인 것을 알 수 있는데, 일반 클래스가 '설계도'라면 인터페이스는 '미완성 설계도'라고 할 수 있다. 때문에 인터페이스 자체만으로 사용되는 것이 아니라 다른 클래스를 작성하는데 도움을 줄 목적으로 작성된다. 쉽게 말해 인터페이스는 추상메소드의 모임. 1.1 인터페이스와 추상클래스의 차이 추상클래스:.. 2021. 4. 15.
추상클래스(abstract class) 1. 추상클래스란? 클래스를 설계도에 비유한다면, 추상클래스는 '미완성 설계도'에 비유할 수 있다. 말 그대로 완성되지 못한 설계도. 클래스가 미완성이라는 의미는 멤버의 개수에 관계된 것이 아니라, 단지 미완성 메소드를 포함하고 있다는 의미다. 지금까지 공부했던 것처럼 미완성 설계도로 완성된 제품을 만들 수 없듯이 추상클래스로는 '인스턴스'를 생성할 수 없다. 추상클래스는 오로지 상속을 통해서 자식클래스에 의해서만 완성될 수 있다. 추상클래스 자체로는 클래스의 역할을 다 하지는 못하지만, 새로운 클래스를 작성하는데 있어서 바탕이 되는 부모클래스로서 중요한 의미를 갖는다. 새로운 클래스를 작성할 때, 아무 것도 없는 상태에서 시작하는 것보다는 완전하지는 못하더라도 어느 정도 틀을 갖춘 상태에서 시작하는 것.. 2021. 4. 8.
다형성(polymorphism) - 매개변수의 다형성 다형성의 장점 ① 다형적 매개변수 ② 하나의 배열로 여러 종류 객체 다루기 참조변수의 다형적 특성은 메소드의 매개변수에도 적용된다. 만약 우리가 전자 제품을 사러 가는 것을 코드를 통해 표현하면 다음과 같다. //1.제품 class Product{ int price; //제품의 가격 int bonusPoint; //제품을 구매하면 주어지는 마일리지 } //2.제품의 구성 class Tv extends Product {} class Computer extends Product {} class Audio extends Product {} //3.고객(물건을 사려는 사람) //3.구매자(구매자의 정보) class Buyer{ int money = 1000; // 소유하고 있는 돈 int bonusPoint =.. 2021. 4. 3.