본문 바로가기

Language/Java

[JAVA] 다형성(polymorphis) 1. 정의 다형성이란, 하나의 객체가 여러가지 타입을 가질 수 있는 것을 말한다. Java에서는 부모 클래스의 참조 변수가 자식 클래스의 인스턴스를 참조할 수 있도록 하는 것으로 다형성을 구현했다. 만약 Camera class가 factoryCam class의 부모 클래스 라면, //Canera가 부모클래스, factoryCam이 자식클래스 Camera FC = new factoryCam(); 라고 선언이 가능하고, 위의 동작을 그림으로 표현하면 다음과 같다. 만약 참조변수와 일반변수의 차이가 헷갈린다면, 밑의 링크를 참조하자. https://dalcheonroadhead.tistory.com/68 만약 Camera 클래스에 factoryCam, SpeedCam 이라는 자식 클래스가 있다고 했을 때, 다.. 더보기
[JAVA]Overriding(덮어쓰기) 1. 정의 부모 클래스의 매소드를 자식 클래스가 재정의 하는 것 따라서 자식클래스에서 해당 매소드를 호출 할 경우, 부모 클래스의 본 매소드가 아닌 새로 정의된 자식 클래스의 메소드가 호출 됨. **Method Overloading 과 다른점 오버로딩은 파라미터의 자료형, 파라미터의 갯수가 다를 경우에만 재정의 할 수 있다. 오버로딩은 계층이 나눠져 있지 않다. 오버라이딩은 부모-자식이라는 계층이 나눠져 있을 때만 가능하다. 오버라이딩은 부모 클래스의 매소드를 재정의 하는 것이므로, 재정의한 매소드의 이름, 매개변수, 리턴 값이 부모 클래스의 매소드와 일치 해야한다! 2. 코드 예시 //부모 클래스 public class Camera { public String name; // 오버라이딩할 매소드 pub.. 더보기
Chap07_09 상속(inheritance) 1. 정의 자식 클래스가 부모 클래스의 모든 것들을 가져오는 것. *쓰는 이유 클래스마다 중복되는 내용이 있는데 같은 내용을 항상 똑같이 쓴다면 중복성이 심해져서 효율성이 저하된다. 따라서 부모 클래스에 이미 있는 내용은 상속을 선언한 자식 클래스에서 선언 안 하더라도 쓸 수 있게 조치한 것 이다. 2. 사용법 //부모 class public class Camera { public String name; // 부모 클래스 public Camera() { this.name = "카메라"; } public void takePicture() { // 사진 촬영 System.out.println(this.name + ": 사진을 촬영합니다."); } public void recordVideo() { // 동영상.. 더보기
Chap07_08 Package 의미 알기 (예시로 Random 이용) 1.Package란? 관련 있는 클래스를 한데 모아놓는 것. 폴더와 비슷한 개념 만약 Chap_07에 묶여있는 클래스들 이라면 최상단에 해당 명령어 필요 (intellj에서는 자동으로 채워짐.) package Chap_07; 2.Random 클래스 이용 (1) Random 클래스가 있는 패키지 불러오는 법 random 클래스는 java 패키지 안의 util 이라는 패키지 속에 있다. 해당 클래스를 사용하려면 다음과 같이 main 매소드에서 사용 전에 import를 해야한다. import java.util.Random; (2) Random 클래스를 이용한 계산 // (랜덤 클래스를 사용) // 랜덤 클래스 동적 할당 Random random = new Random(); System.out.println(".. 더보기
Chap07_07 접근 제어자 1. 정의 우리가 네이버 카페를 운영한다 치면, 방문자가 볼 수 있는 게시물, 새싹 회원이 볼 수 있는 게시물, 높은 등급의 회원이 볼 수 있는 게시물을 다 다르게 구분할 수 있다. 이것과 같은 원리로 접근제어자는, 클래스나 클래스의 구성요소(변수, 매소드)에 접근할 수 있는 권한을 누구까지 줄 것인지 정하는 Keyword 이다. 2. 종류 (1) private 해당 클래스 내에서만 접근 가능하게 하는 KEYWORD private int price; (2) public 모든 패키지, 모든 클래스에서 접근 가능하도록 허용하는 KEYWORD (**public class 정의 시 클래스명과 자바 파일명은 같아야 한다.) public String modelName; (3) default (클래스나 변수,매소드 .. 더보기
Chap07_06 Setter & Getter 1.역할 Getter : 객체의 인스턴스 변수를 조회하는 매소드 //인스턴스 변수 price의 값을 보여주는 매소드 int getPrice() { return price; } Setter : 객체의 인스턴스 변수를 초기화 하는 매소드 // 인수로 들어온 값을 resolution의 값으로 넣는 매소드 void setResolution (String resolution){ this.resolution = resolution; } 2. 생성자를 사용하거나 일일히 초기화 할 수 있는데 왜 쓰일까? 객체의 무결성을 보장하기 위해 쓰인다. **무결성이란 데이터의 정확성과 일관성을 유지하고 보증하는 것을 말한다. 만약 변수를 일일히 초기화 하거나, 생성자를 이용해 초기화 하는 경우, 변수에 존재할 수 없는 값이 들어.. 더보기
Chap07_05 Constructor 와 this 1. Constructor(생성자) 정의 객체를 선언할 때마다 인스턴스 변수를 일일히 초기화 해야한다면, 너무 번거롭다. 생성자는 객체 선언과 동시에 인스턴스 변수를 자동 초기화 시켜주는 역할을 한다. //기존의 방식 : 객체 선언, 인스턴스 변수 일일히 초기화 BlackBox b1 = new BlackBox(); b1.modelName = "까망이"; b1.resolution = "FHD"; b1.price = 20000; b1.color = "블랙"; //생성자 사용 : 객체 선언과 동시에 초기화 //객체b1을 BlackBox 자료형으로 선언, 동적할당, ()안은 생성자에 들어갈 인수 BlackBox b1 = new BlackBox("까망이", "FHD", 200000, "Black"); 이렇게 편리.. 더보기
Chap07_04 Method 와 Method overloading 1. 정의 클래스의 기능을 표현한 것. 해당 클래스를 사용한 객체는 모두 사용할 수 있다. 해당 매소드를 재정의 해서 사용도 가능하다. 2. 선언 일반 매소드랑 똑같음. 선언되는 위치가 클래스 안쪽 일 뿐이다. public class BlackBox{ // 입력 반환 모두 없는 매소드 > 호출만 하면 됨. void autoReport() { if (canAutoReport) { System.out.println("충돌이 감지되어 자동으로 신고합니다."); } else { System.out.println("자동 신고 기능이 지원되지 않습니다."); } } //입력은 필요하나 반환은 없는 매소드 void insertMemoryCard(int capacity) { System.out.println("메모리 .. 더보기