sussa
컴퓨터가 할 일은 컴퓨터가.
sussa
전체 방문자
오늘
어제

블로그 메뉴

    • 분류 전체보기 (58)
      • Language (58)
        • JAVA (58)

    공지사항

    인기 글

    태그

    • Web
    • Database
    • 조건문
    • Instance
    • CSS
    • inheritance
    • singleton
    • DI
    • Til
    • Algorithm
    • spring
    • 캡슐화
    • recursion
    • Thread
    • 재귀
    • 상속
    • 최종연산
    • java
    • 자료구조
    • 스파르타코딩클럽
    • 개발자
    • BinarySearchTree
    • 다형성
    • tree
    • binaryTree
    • 웹개발종합반
    • Class
    • Method
    • HTML
    • Stream

    최근 댓글

    최근 글

    티스토리

    hELLO · Designed By 정상우.
    sussa

    컴퓨터가 할 일은 컴퓨터가.

    Language/JAVA

    Java Instance Array - OOP

    2022. 8. 24. 00:10

    🎯 목표 : Instance(객체) 의 배열을 이해

    📒 객체의 배열

    ❗특징

    1. 객체도 하나의 데이터 타입으로 배열로 다룰수 있다.
    2. 객체 배열 생성후 배열 값을 초기화 해야한다.(=배열에 담을 객체를 초기화)

    📌 예제

     class Product {
        double price;
        double dcrate;
        double dcprice;
     }
     class Tv extends Product {
        public String toString() {
            return "TV";
        }
    }
    class SmartTv extends Product {
        public String toString() {
            return "SmartTV";
        }
    }
    class Desktop extends Product {
        public String toString() {
            return "DeskTop";
        }
    }
    class Notebook extends Product {
        public String toString() {
            return "NoteBook";
        }
    }
    public class MartApp {
        public static void main(String[] args) {
            Product[] p = new Product[4];
            
            for (int i = 0; i < p.length; i++) {
                System.out.println("arrayProduct["+i+"] = " + p[i]);
            }
    //      p[0].price = 50000; Error NullPointerException
            System.out.println("=====================");
            p[0] = new Tv();
            for (int i = 0; i < p.length; i++) {
                System.out.println("arrayProduct["+i+"] = " + p[i]);
            }
        }
    }
    ========== 출력값 =============
    arrayProduct[0] = null < 배열 초기화 전
    arrayProduct[1] = null
    arrayProduct[2] = null
    arrayProduct[3] = null
    =====================
    arrayProduct[0] = TV   <p[0] 객체 생성후(new Tv();)
    arrayProduct[1] = null
    arrayProduct[2] = null
    arrayProduct[3] = null
    • 부모 클래스 Parents 와 상속받은 클래스 Tv, SmartTv, Desktop, Notebook이 있다.
    • main 메소드에서 Product 타입 객체 배열을 선언하고 배열 값을 보기위해 for 문으로 출력하였다.
    • Tv의 객체 생성 이전에는 배열의 값이 모두 null인것을 확인할수 있는데, 배열 p[0]로 Parents 변수의 값을 정의하기위해 아래 코드를 시도하게 되면 NullPointerException 에러가 발생한다.(main 메소드의 주석처리 부분)
    p[0].price = 50000;
    • NullPointerException 에러가 발생하므로 객체 배열을 선언하여 null 값으로 출력되더라도 배열값이 정의된것은 아니라는걸 알수 있다.
    • 아래 코드로 배열 p[0] 에 Tv의 객체를 초기화 하였다.
    p[0] = new Tv();
    • 배열 p[0]에 객체를 초기화 후 출력값을 보면, p[0]의 값이 Tv로 출력되는것을 확인 할수 있다.
    • 객체 초기화 이후에 위에서 에러가 발생했던 코드를 입력하게 되면 정상적으로 실행되는것을 확인할수 있다.

     

    👉 부모 클래스 타입의 객체 배열을 생성하여 자식 클래스를 객체 배열에 정의할수 있다.

    👉 객체 배열은 생성후 배열값을 초기화 하여야한다.

    'Language > JAVA' 카테고리의 다른 글

    Java 내부클래스와 익명클래스 - OOP  (0) 2022.08.26
    Java Interface의 다형성 - OOP_추상화  (0) 2022.08.24
    Java 매개변수의 다형성 - OOP_다형성  (0) 2022.08.23
    JAVA instanceof 연산자 - OOP_다형성  (0) 2022.08.23
    JAVA 참조변수의 형변환 - OOP_다형성  (0) 2022.08.23
      'Language/JAVA' 카테고리의 다른 글
      • Java 내부클래스와 익명클래스 - OOP
      • Java Interface의 다형성 - OOP_추상화
      • Java 매개변수의 다형성 - OOP_다형성
      • JAVA instanceof 연산자 - OOP_다형성
      sussa
      sussa
      Efforts to take on a challenge

      티스토리툴바