본문 바로가기

전체 글

Java 다형성(polymorphism) 다형성(多形性, polymorphism) - 여러 가지 형태를 가질 수 있는 능력 - 조상 타입 참조 변수로 자손 타입 객체를 다루는 것 객체(≒인스턴스) 타입과 참조 변수 타입이 일치할 때와 일치하지 않은 경우? // 일반적인 케이스, 객체 타입(≒ 인스턴스 타입)과 참조 변수 타입 일치 // 자손 타입(SmartTv) 참조 변수(s)와 객체 타입(SmartTv) 일치 SmartTv s = new SmartTv(); // 하지만 타입이 불일치해도 됨, 객체 타입(≒ 인스턴스 타입)과 참조 변수 타입 불일치 // 조상 타입(Tv) 참조 변수(t)와 자손 타입(SmartTv) 불일치 Tv t = new SmartTv(); // 타입이 불일치하면 안되는 케이스 // Error, 자손 타입(SmartTv) 참.. 더보기
Java 제어자(modifier) 제어자(modifier) - 클래스와 클래스의 멤버(멤버변수, 메서드)에 부가적인 의미 부여 - 크게 접근 제어자와 그 외 제어자로 나눔 1) 접근 제어자: public, protected, (default), private 2) 그 외: static, final, abstract, native, transient, synchronized, volatile, strictfp - 하나의 대상에 여러 제어자를 같이 사용 가능(접근 제어자는 하나만 가능), 순서는 상관없지만 보통 접근 제어자를 가장 앞에 씀 public class Test { public static final int WIDTH = 200; // 제어자 3개 사용, public, static, final public static void ma.. 더보기
Java import문 import문 - 다른 패키지의 클래스를 사용하기 위해 패키지명이 포함된 클래스 이름을 사용해야하는데, import문을 이용하여 클래스를 사용할 때 패키지명을 생략할 수 있음 - import문은 컴파일러에게 클래스가 속한 패키지를 알려줌 - java.lang 패키지의 클래스는 Import하지 않고 사용 가능 EX. String, Object, System, Thread... // 이클립스 단축키 ctrl+ shift+o 자동으로 Import 생성 import문의 선언 - import문은 컴파일 시에 처리되므로 프로그램 성능에 영향 없음 - 이름이 같은 클래스가 속한 두 패키지를 import할 때는 클래스 앞에 패키지명을 붙여줘야 함 import 패키지명.클래스명; // 또는 import 패키지명.*; /.. 더보기
Java 패키지(package) 패키지(package) - 서로 관련된 클래스의 묶음 (java8 기준 약 4000개의 클래스가 있음) - 클래스는 클래스파일(*.class), 패키지는 폴더 (하위 패키지는 하위 폴더) - 클래스의 실제 이름(Full name)은 패키지를 포함(java.lang.String) 👉🏻 위치: rt > java > lang > String.class - rt.jar(runtime(실행중)에 jar는 클래스파일 묶어 놓은 것)는 클래스들을 압축한 파일(JDK설치 경로 /jre/lib에 위치) 👉🏻 java9 부터 rt.jar가 너무 커서 사용하지 않고 module 개념으로 쪼개놓음 cf. jar.exe로 압축 풀 수 있음 Jar파일이 압축파일이라고 보면됨 패키지의 선언 - 패키지는 소스파일의 첫 번째 문장으로.. 더보기
Java 참조변수 super 와 조상의 생성자 super() 참조변수 super - 객체 자신을 가리키는 참조변수. 인스턴스 메서드(생성자)내에만 존재 // static 메서드내에서는 사용 불가 - 조상의 멤버를 자신의 멤버와 구별할 때 사용 복습) this: lv와 iv구별에 사용 class Ex7_2 { public static void main(String args[]) { Child c = new Child(); c.method(); } } class Parent { int x=10; } class Child extends Parent { int x=20; void method() { System.out.println("x=" + x); // x=20 System.out.println("this.x=" + this.x); // this.x=20 System.. 더보기
[TIL] 사이드 프로젝트 40일차 개발 진행 상황 - 모임 참여 멤버 관련 코드 추가 - 타 유저 프로필 조회 코드 추가 더보기
Java 오버라이딩(Overriding) 과 오버로딩(Overloading) 메서드 오버라이딩(overriding) 상속받은 조상의 메서드를 자신에 맞게 변경하는 것 override: v. 덮어쓰다 오버라이딩의 조건 1. 선언부가 조상 클래스의 메서드와 일치해야 한다. 2. 접근제어자(public, protected, default, private)를 조상 클래스의 메서드보다 좁은 범위로 변경할 수 없음 3. 예외(8장에서 배움)는 조상 클래스의 메서드보다 많이 선언할 수 없음(자손의 예외는 조상 클래스보다 같거나 적음) class MyPoint3 { int x; int y; String getLocation() { // 조상클래스의 메서드 return "x:"+x+", y:"+y; } } class MyPoint3D extends MyPoint3 { int z; // 조상의 g.. 더보기
Java 모든 클래스의 조상 Object 클래스 Object클래스: 모든 클래스의 조상 - 부모가 없는 클래스는 자동적으로 Object클래스를 상속받게 됨(컴파일러가 자동추가함) - 모든 클래스는 Object클래스에 정의된 11개의 메서드를 상속받음 (9장에서 자세히 배움) 11개 중 대표적인 것들 toString(0, equals(object obj), hashcode() 일단 이정도만 알기 toString은 클래스명@주소값(?)이라는 것을 문자열로 반환함 Circle@15db9742 - 상속계층도(class hierarchy)에서 가장 최고 조상 더보기