inblog logo
|
vosw1
    Java

    객체

    Dec 20, 2023
    객체
    Contents
    기초 변수(Primitive Variable) 참조 변수(Reference Variable) this this()메소드 오버로딩생성자

    기초 변수(Primitive Variable)

    값이 저장
    💡
    크기가 정해져 있음 → jvm이 미리 공간 설계 가능
    예시) 사람의 이름 : 2자리, 3자리 등 가변적
    주민등록번호 : 13자리 (int→52Byte, →13Byte)
    성별 : 1자리
    예시) 카톡 채팅 메세지 : 자료형 설계
    분석 : 가장 길었던 메세지 10000자
    기초변수로 자료형 설계 가능 → char 10000개 = 20000Byte
    최대로 설계해서 메모리가 낭비됨
    ⇒ 기초 변수로 설계 못하고 참조 변수를 사용
     

    참조 변수(Reference Variable)

    크기를 알 수 없을 때
    💡
    값이 아닌 주소 값(포인터)이 들어있음
    예시) n=*1000
    1000번지에 가보니 값이 있음
     
    notion image
     

    this

    현재 객체 자신
    컴파일러에서 자동 생성
    💡
    매개 변수의 이름과 필드의 이름이 동일한 경우 사용해서 구분
     

    this()

    다른 생성자
    💡
    생성자 안에서만 호출 가능
    반드시 첫 번째 문장이여야 함
    다른 생성자를 호출할 때만 사용
     

    연습문제


    package ex04; public class DeskLamp { private boolean isOn; public void turnOn(){ isOn = true; } public void turnOff(){ isOn = false; } @Override public String toString() { return "현재 상태는 " + (isOn == true ? "켜짐" : "꺼짐"); } }
    package ex04; public class DeskLampTest { public static void main(String[] args) { DeskLamp myLamp = new DeskLamp(); myLamp.turnOn(); System.out.println(myLamp); myLamp.turnOff(); System.out.println(myLamp); } }
    notion image
    package ex04; class Box { int width; int length; int height; double getVoume(){ return (double) width * height * length; } } public class BoxTest{ public static void main(String[] args) { Box b; b = new Box(); b.width = 20; b.length = 20; b.height = 30; System.out.println("상자의 가로, 세로, 높이는 " + b.width + ", " + b.length + ", " + b.height + "입니다."); System.out.println("상자의 부피는 " + b.getVoume() + "입니다."); } }
    notion image
     
    package ex04; public class Television { int channel; int volume; boolean onOff; public static void main(String[] args) { Television myTv = new Television(); myTv.channel = 7; myTv.volume = 10; myTv.onOff = true; Television yourTv = new Television(); yourTv.channel = 9; yourTv.volume = 12; yourTv.onOff = true; System.out.println("나의 텔레비전의 채널은 " + myTv.channel + "이고 볼륨은 " + myTv.volume + "입니다."); System.out.println("너의 텔레비전의 채널은 " + yourTv.channel + "이고 볼륨은 " + yourTv.volume + "입니다."); } }
    notion image
     
    UML(Unified Modeling Language)
    소프트웨어 시스템을 시각적으로 표현
     
    클래스 다이어그램 (Class Diagram) 시스템의 클래스, 클래스의 속성, 동작 방식, 객체 간 관계를 표시하여 시스템의 구조를 보여주는 정적 구조 다이어그램
    notion image
    notion image
     
    💡
    toString : 상태확인
    public boolean getIsOn()없이 참조변수만 있어도 자동실행

    연습문제

    package ex03; class GugudanUtil{ static void gugudan(int x){ //파라미터도 stack에서 만들어짐 for (int i = 1; i <= 9; i++) { System.out.println(x + "*" + i + "=" + (x * i)); } System.out.println(); } } public class GugudanEx04 { public static void main(String[] args) { GugudanUtil.gugudan(10); } }
    notion image
     
    1차 개발자 : 라이브러리를 만든 개발자
    2차 개발자 : 만들어진 라이브러리로 만든 개발자
     
    2차 개발자에게 사용방법 설명하는 방법
    public class GugudanEx04 { public static void main(String[] args) { //구구단을 출력해주는 메서드 //ex) GugudanUtil.gugudan(5); //GugudanUtil 클래스에 gugudan 정적 메서드를 호출하시오. //파라미터는 int 1개가 필요합니다. } }
    검증 : 최소 몇 가지 실행 > 실무에 적용
     

    메소드 오버로딩

    같은 이름의 메소드가 여러개 존재 가능 ⇒ 중복정의
     

    생성자

    객체가 생성될 때 초기화하는 특수한 메소드
    💡
    기본 생성자 : 매개변수가 없음

    연습문제


    package ex04; public class MyMath { int add(int x, int y){ return x+y; } int add(int x, int y, int z){ return x + y + z; } int add(int x, int y, int z, int w){ return x + y + z + w; } public static void main(String[] args) { MyMath obj; obj = new MyMath(); System.out.print(obj.add(10, 20) + " "); System.out.print(obj.add(10, 20, 30) + " "); System.out.print(obj.add(10, 20, 30, 40) + " "); } }
    notion image
     
    package ex04; class Pizza { int size; String type; public Pizza(){ size = 12; type = "슈퍼슈프림"; } public Pizza(int s, String t){ size = s; type = t; } } public class PizzaTest{ public static void main(String[] args) { Pizza obj1 = new Pizza(); System.out.println("(" + obj1.type + "," + obj1.size + ",)"); Pizza obj2 = new Pizza(24, "포테이토"); System.out.println("(" + obj2.type + "," + obj2.size + ",)"); } }
    notion image
     
    package ex04; class Television01 { private int channel; private int volume; private boolean onOff; Television01(int c, int v, boolean o) { channel = c; volume = v; onOff = o; } void print(){ System.out.println("채널은 " + channel + "볼륨은 " + volume + "입니다."); } } public class TelevisionTest{ public static void main(String[] args) { Television01 myTv = new Television01(7, 10, true); myTv.print(); Television01 yourTv = new Television01(11, 20, true); yourTv.print(); } }
    notion image
     
    package ex04; class Box01 { int width, height, depth; } public class BoxTeat{ public static void main(String[] args) { Box01 b = new Box01(); System.out.println("상자의 크기: (" + b.width + "," + b.height + "," + b.depth + ")"); } }
    notion image
     
    package ex04; class A{ private int a; int b; public int c; } public class Test { public static void main(String[] args) { A obj = new A(); obj.b = 20; obj.c = 30; } }
     
    package ex04; class Account { private int regNumber; private String name; private int balance; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getBalance() { return balance; } public void setBalance(int balance) { this.balance = balance; } } public class AccountTest { public static void main(String[] args) { Account obj = new Account(); obj.setName("Tom"); obj.setBalance(10000); System.out.println("이름은 " + obj.getName() + " 통장 잔고는 " + obj.getBalance() + "입니다."); } }
    notion image
     
    package ex04; class SafeArray { private int a[]; public int lenght; public SafeArray(int size) { a = new int[size]; lenght = size; } public int get(int index){ if(index >= 0 && index < lenght){ return a[index]; } return -1; } public void put(int index, int value){ if(index >= 0 && index < lenght){ a[index] = value; } else { System.out.println("잘못된 인덱스 " + index); } } } public class SafeArrayTest{ public static void main(String[] args) { SafeArray array = new SafeArray(3); for (int i = 0; i < array.lenght+1; i++) { array.put(i, i * 10); } } }
    notion image
     
     
    Share article
    Contents
    기초 변수(Primitive Variable) 참조 변수(Reference Variable) this this()메소드 오버로딩생성자

    vosw1

    RSS·Powered by Inblog