본문 바로가기

4. Programming/4.1 JAVA

30 - 클래스 형변환 부모타입으로 자식 객체를 참조하게 되면, 부모가 가지고 있는 메소드만 사용할 수 있음. 자식객체가 갖고 있는 메소드를 사용하고 싶다면 형변환을 해야 함 public class Car{ public void run(){System.out.println("달리는 중");}} car 클래스를 상속받는 Bus 클래스public class Bus extends Car{ public void hooter(){System.out.println("빵빵");}} 부모 타입으로 자식 객체를 참조할 수 있음 - 부모타입으로 자식 객체를 참조하게 되면, 부모가 가지고 있는 메소드만 사용할 수 있음 public class BusExam{public static void main(String args[]){Car car = ne.. 더보기
29 - 오버라이딩(overriding) 오버라이딩 부모가 가지고 있는 메소드와 똑같은 모양의 메소드를 자식이 가지고 있는 것, 즉 메소드를 재정의 하는 것 run 메소드를 보유한 Car 클래스public class Car{ public void run(){System.out.println("달리는 중");}} car 클래스를 상속받는 Bus 클래스public class Bus extends Car{} Bus 객체 생성 후, bus의 run 메소드를 실행 시키는 클래스public class OverridingStudy{public static void main(String args[])Bus bus = new Bus();bus.run(); }} 메소드를 오버라이드 하면, 항상 자식클래스에서 정의된 메소드가 호출 됨 참고 : tryhellowor.. 더보기
28 - Super와 부모 생성자 class가 인스턴스화 될 때 생성자가 실행 되면서, 객체를 초기화 함. 그 때 자신의 생성자만 실행이 되는 것이 아니고, 부모의 생성자 부터 실행됨. Car 클래스public class Car{ public Car(){ System.out.println("Car의 기본 생성자"); } } Car를 상속 받는 Bus 클래스public class Bus extends Car{ public Bus(){ System.out.println("Bus의 기본 생성자"); } } 테스트 클래스public class BusExam{ public static void main(String args[]){ Bus b = new Bus(); } } - 상단의 결과는 "Bus의 기본 생성자" , "Car의 기본 생성자" 가 .. 더보기
27 - 추상 클래스 추상 클래스 구체적이지 않은 클래스를 의미 버스, 스포츠카는 구체적인 차를 지칭하는데 자동차, 새 이런 것은 구체적이지 않음, 이런 것을 구현한 클래스를 '추상 클래스'라고 함 추상 클래스 정의하기 - 추상 클래스는 클래스 앞에 'abstract' 키워드를 사용하여 정의- 추상 클래스는 미완성의 추상 메소드를 포함할 수 있음 (추상 메소드도 리턴 타입 앞에 'abstract' 키워드를 사용하여 정의)- 메소드가 하나라도 추상 메소드인 경우, 해당 클래스는 추상 클래스가 됨- 추상 메소드는 인스턴를 생성할 수 없음public abstract class Car{ public abstract void stop(); public void run(){ System.out.println("자동차가 앞으로 가는 중".. 더보기
26 - 접근 제한자 접근 제한자 클래스 내에서 멤버의 접근을 제한하는 역활 접근 제한자의 종류 접근 제한자 설명 public 어떤 클래스든 접근 가능 protected 자기 자신, 같은 패키지, 서로 다른 패키지라고 하더라도 상속받은 자식 클래스 private 자기 자신만 접근할 수 있음 default (아무것도 기재하지 않음) 자기 자신과 같은 패키지에서만 접근 가능 public class acessConstraints{ public int a = 3; private int b = 1; int c = 2; protected int d = 4; } public class acessConstraintsExam {public static void main(String args[]){ acessConstraints ads = n.. 더보기
25 - 상속 상속 부모가 자식에게 물려주는 것을 의미Ex) 노트북은 컴퓨터의 한 종류, 버스는 차의 한 종류 Car 클래스를 상속받는 Bus Class 표현 방법 public Class car { } public Class Bus extends car {} 클래스 이름 뒤에 'extends' 키워드를 적고 부모클래스의 이름을 적게 되면, 부모 클래스가 갖고 있는 멤버를 물려받음상속되는 클래스를 부모 클래스라하여, 슈퍼 클래스(Super Class) 라고도 하며, 자식 클래스는 서브클래스(sub class) 라고도 불리운다 부모클래스 메소드를, 자식 클래스에서 상속받아서 사용 public Class car {public void run() {System.out.println("달리다.");}} public Class .. 더보기
24 - 메소드 오버로딩(Overloading) 메소드 오버로딩 매개 변수의 유형과 개수가 다르게 하여 같은 이름의 메소드를 여러 개 가질 수 있도록 하는 기능 이름은 같지만 매개변수가 다른 메소드 public class methodOverloading { public int plus (int x, int y){ return x + y; } public int plus (int x, int y, int z){ return x + y + z; }} 오버로딩 된 메소드 이용하기 public methodOverloadingStudy { public static void main(String args[]){ methodOverloading m = new methodOverloading();System.out.println(m.plus(5,10)); Syste.. 더보기
23 - This ThisThis는 현재 객체, 자기 자신을 나타냄 This의 사용 public class Car { String name;int number; public car (String n){ name = n; } } car 클래스의 생성자 매개변수의 이름이 n, n이라는 변수명이 무엇을 의미하는지 쉽게 알 수 없음n을 name 으로 사용하는 것이 좋음 public car (String name){ name = name; } 'name = name' 이라고 코드가 변경되면, 가깝게 선언 된 변수를 우선 사용하기 때문에 'name = name' 이라는 코드는 매개변수의 name 값을 매개변수 name에 대입하라는 의미가 됨 따라서 필드가 바뀌지 않음으로, 필드라는 것을 컴파일러와 JVM 에게 알려주기 위해 'Thi.. 더보기