728x90
반응형
728x90
반응형
지네릭스 Collection 클래스의 타입체크를 해주는 기능을 가지고 있다. 아래의 예시처럼 지네릭스를 써주지 않으면 컴파일러가 arr.get(0)의 인덱스 자리의 값을 확인할 수 없기 때문에 일일이 형변환을 해주어야 컴파일오류가 나지 않는다. ArrayList arr = new ArrayList(); arr.add(1); arr.add(1); arr.add(1); int i = (Integer) arr.get(0); 지네릭스를 아래와 같이 지정해주면 컴파일러에게 새로운 기준을 넣어준 것이기 때문에 형변환을 하지 않아도 컴파일오류가 발생되지 않는다. 단 지정타입을 제외한 타입을 저장하게 될 경우 컴파일 오류 발생 ArrayList arr = new ArrayList(); arr.add(1); arr.ad..
Iterator Collection의 데이터를 보다 쉽게 관리하기 편하게 만든 표준화 클래스이다. Iterator의 메서드는 hasNext(), next()만 존재하기 때문에 Collection을 사용하여 객체데이터를 저장한 값을 받아서 관리하기 용이하다. 코드설명 1. 다형성을 이용하여 Collection의 메서드만 사용하는 ArrayList를 선언한다. 2. Collection의 add메서드를 사용하여 javaclass라는 객체 데이터를 저장한 후 3. 그 저장된 데이터값을 iterator로 저장한다. 저장 시 Collection의 데이터를 받아오는 것이기 때문에, new로 선언하지 않고 참조변수인 c.Iterator()로 선언 4. 저장된 객체정보를 hasNext와 next로 데이터 끝까지 읽어온다..
메서드 오버라이딩 다형성을 통해 조상의 자료형으로 자식의 클래스를 호출하면 일반적으로 조상의 멤버변수와 메서드만 호출할 수 있다. 하지만 상속의 조건하에서 오버라이딩된 자식의 메서드는 동일한 이름으로 되어있기 때문에 호출 가능하다. public class Overriding { public static void main(String[] args) { Speaker speaker = new Speaker(); Speaker speaker2 = new BaseEnSpeaker(); speaker2.setVolumeRate(7); System.out.println(speaker2.getVolumRate()); speaker2.showCurrentState(); //출력문: //7 //베이스 크기: 0 //자료..
instanceof 참조변수의 형변환을 하기 전에 instanceof 함수를 써서 형변환 가능여부 확인 > 가능하면 true 반환 사용이유: 형변환하기전에 형변환 가능여부를 확인할 때 조상 멤버를 상속받을 때 어떤 인스턴스를 받을 지 알 수 없기 때문에 instanceof로 TV가 가르키는 smartTV 인스턴스로 형변환이 가능한지 확인해야 함 아래와 같이 형변환이 가능하면 true값을 반환하고 불가능하면 false값을 반환 SmartTV smarttv = new SmartTV(); TV tv = new TV(); System.out.println(smarttv instanceof TV); System.out.println(smarttv instanceof SmartTV); System.out.print..
다형성 - polymorphism 조상 타입 참조 변수로 자손 타입 객체를 다루는 것 다만 반대의 경우는 불가능 (자손타입이 조상타입 객체를 가리키는 것) 참조된 인스턴스 멤버의 개수(조상)가 실제 사용 가능한 개수(자손)보다 적기때문에 오류 발생 아래와 같이 객체와 인스턴스 타입이 불일치함을 다형성을 표현하였다고 함 TV t = new SmartTV(); // 객체와 인스턴스 타입이 불일치 SmartTV st = new SmartTV(); 객체와 인스턴스가 불일치함의 의미는 사용할 수 있는 인스턴스 멤버의 개수가 달라진다고 볼 수 있다. 만약 다형성이 아니라면 (객체와 인스턴스가 일치하면) 아래의 코드처럼 TV의 클래스에 들어있는 총 4개의 변수 + SmartTv 클래스의 2개의 변수 = 총 6개를 사..