Language`(93)
-
[Java] 업캐스팅 / 다운캐스팅
업캐스팅 (Upcasting) - 서브 클래스의 객체에 대한 레퍼런스 -> 슈퍼 클래스 타입으로 변환 - 슈퍼 클래스의 레퍼런스로 서브 클래스의 객체를 가리키게 한다 - But 슈퍼 클래스의 레퍼런스는 슈퍼 클래스의 멤버만 접근 가능 - 명시적 타입 변환을 하지 않아도 된다 ※ Example class Person{ String name, id; public Person(String name){ this.name = name; } } class Student extends Person{ String grade, department; public Student(String name) { super(name); } } public class test { public static void main(String..
2021.11.24 -
[Java] 상속
상속 (Inheritance) - 클래스 사이의 상속 - 코드 중복을 제거하여 클래스를 간결하게 구현 - 부모 클래스 = 슈퍼 클래스(Super Class) / 상속받는 자식 클래스 = 서브 클래스(Sub Class) ※ 서브 클래스 - 슈퍼 클래스의 private 멤버를 제외한 모든 멤버에 접근 가능 ※ Example class Point{ private int x, y; public void set(int x, int y){ // private로 선언된 x, y에 접근을 위한 메소드 this.x = x; this.y = y; } public void showPoint(){ System.out.println("(" + x + "," + y + ")"); } } class ColorPoint extend..
2021.11.24 -
[Java] final 키워드
final 클래스 - 클래스를 상속받을 수 없음을 지정 final class FinalClass{ ..... } class SubClass extends FinalClass{ // 오류 : final class 인 FinalClass는 상속 X ..... } final 메소드 - 오버라이딩 할 수 없는 메소드 public class SuperClass{ protected final int finalMethod(){....} // finalMethod()는 자식이 오버라이딩 불가 } class SubClass extends SuperClass{ // SubClass가 SuperClass 상속 protected int finalMethod(){....} // 오류 : finalMethod()는 오버라이딩 X..
2021.11.19 -
[Java] static
※ Example (눈, 공기) 눈 - 사람마다 각자의 차이가 존재 - non-static 멤버 공기 - 모든 사람이 공유 - 오직 1개만 존재 - static 멤버 class StaticSample{ int n; // non-static 필드 void g(){...} // non-static 메소드 static int m; // static 필드 static void f(){...} // static 메소드 static 멤버 - 객체를 생성하지 않고도 사용 가능 - 클래스당 하나만 생성되는 멤버 (클래스 멤버) -> 동일한 클래스의 모든 객체들이 공유 - main() 메소드가 실행되기 전에 이미 생성 - static 멤버의 생성 시점 ≒ JVM 시작 시점 non-static 멤버 - 객체가 생길 때 객..
2021.11.19 -
[Java] 접근 지정자
패키지 - 서로 관련 있는 클래스 파일들을 패키지(Package)에 저장하여 관리 - 패키지 ≒ 디렉토리/폴더 4가지 접근 지정자 - private / protected / public / defaule(접근 지정자 생략) 클래스 접근 지정 public 클래스 - 패키지에 상관없이 다른 어떤 클래스에게도 사용이 허용 -> 모두 허용 public class World{ .... } default 클래스 (접근 지정자 생략) - 같은 패키지 내의 클래스들에게만 사용이 허용 class Local{ .... } 멤버 접근 지정 - 공개 범위(오름차순) : private -> default -> protected -> public 멤버에 접근하는 클래스 멤버의 접근 지정자 private default protec..
2021.11.19 -
[Java] 메소드 오버로딩
메소드 오버로딩 (Method Overloading) - 한 클래스내에 이름이 같지만, 매개변수의 타입 or 개수가 서로 다른 여러 개의 메소드를 중복 작성하는 것 - 자바 다형성의 한 경우 - 자바 컴파일러에 의해 판단 조건 1. 메소드 이름이 동일 2. 매개변수의 개수 or 타입이 서로 달라야 함 ※ 메소드의 리턴 타입, 접근 지정자는 메소드 오버로딩과 관계 X 성공 사례 1) class MethodOverloading{ public int getSum(int i, int j){ return i+j; } public int getSum(int i, int j, int k){ return i+j+k; } } ≫ 메소드의 이름 동일 (getSum) ≫ 매개변수의 개수가 서로 다름 ( getSum(int ..
2021.11.19 -
[Java] 객체 배열 / 메소드
객체 배열 - 객체에 대한 레퍼런스를 원소로 갖는 배열 class Circle{ int radius; public Circle(int radiut){ this.radius = radius; } public double getArea(){ return 3.14*radius*radius; } } 1. 배열에 대한 레퍼런스 선언 - 배열의 크기를 지정하면 컴파일 오류 발생 Circle[] c; 2. 레퍼런스 배열 생성 c = new Circle[5]; 3. 객체 생성 for(int i=0; i 호출자(Caller)가 건네는 값이 매개변수에 복사되어 전달 -> 메소드의 매개변수 : 변경 O / 호출된 실제 인자의 값 : 변경 X ..... static void increase(int m){ m = m + 1; ..
2021.11.19 -
[Java] 클래스 / 객체
클래스-객체 클래스 - 객체를 만들기 위한 설계도/틀 - 객체의 속성/행동 포함 객체 - 클래스(캡슐)의 모양 그대로 찍어낸 실체 프로그램 실행 중에 생성되는 객체 메모리 공간을 갖는 구체적인 실체 인스턴스(Instance)라고도 불림 - 클래스 : 객체 = 1 : M ※ Example - 클래스 : 사람 / 객체 : 홍길동, 가나다,... - 클래스 : 자동차 / 객체 : BMW, 페라리,... 클래스 구성 ≫ 클래스 선언 (class Circle) - 중괄호{} 안에 필드(field), 메소드(method)를 모두 작성 - 클래스 외부에는 어떤 필드나 메소드도 올 수 없다 (캡슐화의 원칙) ≫ 필드/메소드 - 필드 : 변수 (radius, name) - 메소드 : 함수 (Circle(), getAre..
2021.11.18 -
[Java] 객체 지향 언어의 특성
1. 캡슐화 (Encapsulation) - 객체를 캡슐로 싸서 내부를 보호하고 볼 수 없게 하는 것 (가장 본질적 특성) - 외부의 접근으로부터 안전 클래스 (Class) - 클래스(class) : 객체 모양을 선언한 틀 (캡슐화) 필드 (멤버 변수) 메소드 (멤버 함수) 클래스 (필드, 메소드)로 구성 객체 (Object) - 클래스의 모양대로 생성된 실체 - 객체 내 데이터에 대한 보호, 외부 접근 제한 2. 상속 (Inheritance) - 자식 클래스가 부모 클래스의 속성을 물려받고 기능을 추가하여 확장(extends) - 자식 클래스 = 서브 클래스(Sub Class) / 부모 클래스 = 슈퍼 클래스(Super Class) - 서브 클래스 객체 = 슈퍼 클래스 멤버 + 서브 클래스 멤버 3. ..
2021.11.18