2022/10/27 5

[ JAVA ] 추상클래스(abstract class)란?

추상클래스(abstract class)란? 클래스 설계도에 비유한다면, 추상클래스는 미완성 설계도에 비유할 수 있다. 단어 뜻 그래도 완성되지 못한 채로 남겨진 설계도를 말한다. 하지만 우리가 생각하는 것 처름 클래스가 미완성이라 아무것도 없는 것이 아니라 단지 미완성 메서드(추상메서드)를 포함하고 있다는 의미이다. 🙄 그래서 추상 클래스 사용하는 이유는 뭘까? → 자식 클래스에서 반드시 사용되어야 하는 메소드를 작성해야 할 때이다. 🙄그러면 그냥 오버라이딩해서 사용하면 되지 않나? → 상속받은 자식 클래스에서는 메소드들이 완전히 구현된 것으로 인식하고 오버라이딩하지 않을 수 있기 때문에 추상 클래스를 사용한다. 반드시 사용되어야 하는 메소드를 추상 클래스에 추상 메소드로 선언해 놓으면, 이 클래스를 상..

[ JAVA ] 다형성 - 매개변수의 다형성, 여러 종류의 객체 배열

1. 매개변수의 다형성 참조변수의 다형적인 특징은 메서드의 매개변수에도 적용된다. 예제로 알아보자! 💎예제💎 class Product { int price; int bonusPoint; } class TV extends Product{} class Computer extends Product{} class Audio extends Product{} class Buyer { int money = 1000; int bonusPoint = 0; } 위 코드를 보면 Product클래스는 TC,Audio,Computer클래스의 부모클래스이며, Buyer 클래스는 제품을 구입하는 사람을 클래스로 표현한 것이다. 여기서 Buyer 클래스에 물건을 구입하는 기능의 메서드를 추가해보자! 구입할 대상이 필요하므로 매개변수..

[ JAVA ] Instanceof 연산자란? Instanceof 연산자 사용방법

Instanceof 연산자란? 객체가 어떤 클래스인지, 어떤 클래스를 상속받았는지 확인하는데 사용하는 연산자 이다.즉, 참조변수가 참조하고 있는 인스턴스의 실제 타입을 알아보기 위해 해당 연산자를 사용한다. 💡문법💡 object instanceOf type object가 type이거나 type을 상속받는 클래스라면 true를 리턴합니다. 그렇지 않으면 false를 리턴합니다. 💎예제💎 간단하게 살펴보자면, class A { } class B extends A { } // A 클래스를 상속 public static void main(String[] args) { A a = new A(); B b = new B(); System.out.println(a instanceof A); // true 출력 Syst..

[ JAVA ] 다형성 - 참조변수의 형변환

참조형 변수도 형변환이 가능한가? → 가능하다.기본형 변수와 같이 참조 변수도 형변환이 가능하다. 단, 조건이 있다. 서로 상속관계이 있는 클래스 사이에서만 가능하다. ✅ 참고 바로 위 부모나 바로 밑 자식이 아닌, 부모의 부모인 조부모로도 형변환이 가능하다. 따라서 모든 참조변수는 모든 클래스의 조상인 Object클래스 타입으로 형변환이 가능다. 기본형 변수의 형변환에서 작은 자료형에서 큰자료형의 형변환은 생략이 가능 했듯이, 참조형 변수의 형변환에서는 자식타입의 참조변수를 부모타입으로 형변환하는 경우에 형변환을 생략할 수 있다. 자식타입 → 부모타입(Up-casting) : 형변환 생략가능 부모타입 → 자식타입(Down-casting) : 형변환 생략불가 * 참조변수간의 형변환 역시 캐스트연산자를 사..

[ JAVA ] 다형성이란?

다형성이란? 객체지향 개념에서는 '여러 가지 형태를 가질 수 있는 능력'을 의미한다. Java에서는 한 타입의 참조 변수로 여러 타입의 객체를 참조할 수 있도록 함으로써 다형성을 프로그램적으로 구현하였다. 구체적으로 말하자면, 부모 클래스 타입의 참조 변수로 자식 클래스의 인스턴스를 참조할 수 있도록 하였다는 것이다. 💡잠깐, 참조 변수 타입과 인스턴스 타입이 같아야 하는 것 아닌가❗❔ → 답은 아니다! 참조 변수 타입과 인스턴스 타입이 일치하는 것이 보통이지만, 서로 상속 관계에 있을 경우, 다음과 같이 부모 클래스의 타입의 참조 변수로 자식 클래스의 인스턴스를 참조하도록 하는 것도 가능하다! 🙄 그러면 왜 이렇게 사용하는 것일까? 그리고 어떤 차이가 있을까? → 일단 어떤 차이가 있는지 알아보고 왜 ..

728x90