프로그래밍/Java (20) 썸네일형 리스트형 타입 변환과 다형성 다형성 사용방법은 동일하지만 다양한 객체를 이용해서 다양한 실행 결과가 나오도록하는 성질 ex) 팥 붕어빵, 슈크림 붕어빵 public class A{ } public class B extends A{ } public class Test{ public static void main(String[] args){ B b = new B(); A a = b; A aa = new B(); } } 자식 타입은 부모 타입으로 자동 형변환 가능 바로 부모 자식 관계가 아니라 상속 계층에 속하면 자동 타입 변환 가능 class A{} class B extends A{} class C extends B{} class D extends A{} class E extends D{} public class test{ public.. 상속 extends사용 public class B extends A{ } 상속 특징 Java에서 다중상속(자식기준)을 지원 X 하나 이상의 부모를 둘 수 없다 여러 자식을 두는 것은 가능 부모 클래스에서 private 접근제한자가 붙은 필드와 메소드는 상속에서 제외 자식객체만 생성하더라도 부모객체가 먼저 생성된 후에 자식객체 생성 public class A{ A(){ System.out.println("A Class"); } } public class B extends A{ B(){ System.out.println("B Class"); } } public class Test{ public static void main(String[] args){ B b = new B(); } } Test에서 자식 Class.. final필드와 상수 final 필드 선언법 final 타입 변수 [=초기 값]; final 필드 초기값 주는법 1. 필드 선언 시 2. 생성자에서 상수 final 필드 자체를 상수라고 하진 않음 객체마다 저장할 필요가 없기 때문에 객체를 생성하지 않아도 쓸 수 있어야함 상수 선언은 public static final 타입 변수 = 초기값; 싱글톤 프로그램에서 단 하나만 생성되는 객체 조건1(생성자 제한) new 연산자로 객체를 여러개 생성하는 것을 막아야함 생성자를 외부에서 호출할 수 없도록 생성자 앞에 private로 제한 조건2(필드) 클래스 내부에서만 객체를 생성하기 위해 외부에서 변경하지 못하도록 private를 붙인 다음 자신의 타입인 정적필드(static)를 선언하고 자신의 객체를 생성해서 초기화 조건3(메소드) 클래스 내에서 만들어진 하나의 객체를 외부에서 호출할 수 있게하는 메소드를 만든다 public class Singleton{ private static Singleton single = new Singleton(); private Singleton(){} static Singleton getSingleton(){ return .. 정적 멤버, 메소드 public class Calculator{ String color;//인스턴스 멤버 void setColor(String color){//인스턴스 메소드 this.color=color; } static int plus(int x, int y){//정적 메소드 return x+y; } static int minus(int x, int y){//정적 메소드 return x-y; } } 정적 메소드 선언 시 주의할 점 정적 메소드 선언할 때 내부에 인스턴스 필드나 메소드, this키워드 사용불가 사용하려면 아래 코드처럼 객체 생성 후 사용가능 public class ClassName{ int field1; void method1(){ } static int field2; static void method2(.. 메소드 매개변수의 개수를 모를 경우 int[] values or int ... values public class Computer{ int sum1(int[] values){ int sum=0; for(int i=0;i this public class Car{ //필드 String model; int speed; //생성자 Car(){}; Car(String model){ this(model,0); } Car(String model, int speed){ this.model=model; this.speed=speed; } //메소드 void getModel(String model){ this.model=model; } } 2번째에 있는 this()는 다른 생성자를 호출하는 것 코드 중복을 막기위해 2번째 생성자가 3번째 생성자를 호출 나머지 this.은 지금 현재 클래스(Car)의 필드를 가리키는 것 생성자나, 메소드의 매개변수의 이름이 필드명과 같을 때 쓴다 다르다면 this를 하지 않아도 됨 객체 객체 Java에서 설계도가 Class(붕어빵 틀) Class로 만든 객체가 인스턴스(붕어빵) 객체 생성과 클래스 변수 Class A를 만듬 public class A{ } Class A로 Class A_Test내에 Class A 변수를 생성 public class A_Test{ A a = new A(); } A(붕어빵 틀) a(붕어빵) 클래스 변수 = new 클래스(); Class의 구성 멤버 public class ClassName{ int fild;//필드 ClassName(){};//생성자 void method(){};//메소드 } 필드 필드는 생성자와 메소드 전체에서 사용되며 객체가 소멸되지 않는 한 객체와 함께 존재 생성자 new연산자로 호출되는 블록 객체 생성 시 초기화 담당 필드를 초기화 하.. 이전 1 2 3 다음