java (53) 썸네일형 리스트형 Step12_UtilClass (ArrayList, Scanner, 확장 for 문) 가변배열 ArrayList ArrayList는 참조 data type만 저장할 수 있다. add get size를 많이 사용한다. add() 해당 타입의 정보를 입력 get() 해당 번호에 있는 정부를 출력 remove() 해당 번호에 있는 정보를 삭제 set() 해당 번호에 해당 정보를 입력 size() 저장된 정보 갯수를 출력 clear() 모든 정보 삭제 MainClass01 (ArrayList 사용법과 자주쓰는 코드) 가변배열 ArrayList ArrayList는 참조 data type만 저장할 수 있다. add get size를 많이 사용한다. add() 해당 타입의 정보를 입력 get() 해당 번호에 있는 정부를 출력 remove() 해당 번호에 있는 정보를 삭제 set() 해당 번호에 해당 .. Step11_GenericClass(포괄클래스) Generic class (포괄 클래스) Generic class (포괄 클래스)는 특정 타입에 제한되지 않고 모든 타입을 변수의 타입으로 설정할 수 있게 해준다. 여기서 T는 type 의 약자로 일반적으로 Generic class 변수의 데이터 유형을 표시하는 기호이다. 포괄클래스를 만들고 setter getter 메소드를 추가하였다. 이때 type을 T로 지정해서 추후에 가변 가능하게 만들었다. MainClass01 (포괄클래스, setter,getter 활용 예시) 포괄클래스인 FruitBox를 활용해서 변수를 만들거나 setter getter 메소드를 활용한 예시이다. MainClass02 (generic class 생략 가능할때) Generic class (포괄 클래스)를 약간 생략해서 작성이 .. Step10_Interface(@FunctionalInterface, 메소드 표현식) @FunctionalInterface 함수 모양으로 사용할 인터페이스에 붙이는 어노테이션 - 추상 메소드가 1개인 인터페이스 - 추상 메소드의 갯수가 1개로 강제된다. Mainclass05, Calc (FunctionalInterface, 메소드표현식) @FunctionalInterface 함수 모양으로 사용할 인터페이스에 붙이는 어노테이션이다. 굳이 @FunctionalInterface, interface 형식을 사용하지 않고도 추상 메소드를 1개만 사용하는 class 혹은 interface는 람다 함수식을 사용할 수 있다. 그럼에도 @FunctionalInterface 를 사용하는 이유는 신뢰성을 높이기 위해서다. @FunctionalInterface를 사용하고 interface를 만들때 추상메소드를.. Step10_Interface (메소드 표현식) MainClass04 (메소드 표현식) 새로운 메소드 표현식을 소개하기에 앞서 추상메소드가 1개인 인터페이스 Drill을 작성했다. 이 메소드 표현식은 익명클래스가 구현한 인터페이스의 메소드가 오직 한개만 있을때 사용 가능하다. 설명1과 같이 간단하게 메소드를 작성할 수 있다. 다시 MainClass04를 보자면 위의 코드인 "벽에 구멍을 뚫어요"와 "바닥에 구멍을 뚫어요"은 같은 결과를 출력한다. d2와 d3를 사용한 코드도 위의 코드와 비슷하고 변수에 담는다는 차이가 있다. useDrill(d2); useDrill(d3); 해당 코드와 같이 메소드의 인자로 전달하여 useDrill 메소드를 실행하여 hole 메소드를 실행하는 방법이 있으며 d2.hole(); d3.hole(); 해당 코드와 같이 직접.. Step10_Interface(interface, final, 익명클래스) Interface - 생성자가 없다 (단독 객체 생성 불가) - 구현된 메소드는 가질수 없다 ( 추상 메소드만 가질수 있다 ) - 필드는 static final 상수만 가질수 있다. - data type 의 역활을 할수 있다. - interface type 의 참조값이 필요하면 구현(implements) 클래스를 만들어서 객체를 생성해야 한다. - 클래스 상속은 단일 상속이지만, 인터페이스는 다중 구현이 가능하다 interface는 추상메소드만 사용하기 때문에 따로 abstract를 작성하지 않아도 된다. 메소드 형태가 온전하기 때문에 interface도 data type으로 사용가능하다 예시에서는 Remocon을 data type으로 사용 가능하다. interface 는 상속받는 것이 아니라 구현한다고.. Step09_AbstractClass(inner class, 익명클래스) inner class 클래스 안에 정의 할 수 있는 것은 생성자, 필드, 메소드, 클래스가 있다. inner class 는 안드로이드 프로그래밍에서 많이 쓰이며 웹 프로그래밍에서는 자주 쓰이지 않는다. inner class와 local inner class의 차이 inner class class안에 정의된 class local inner class method 안에 정의된 class anonymous class (익명 클래스) -익명 클래스는 Inner class로, 이름이 없는 클래스를 말한다. 클래스 정의와 동시에 객체를 생성할 수 있다. -Interface, Class 모두 익명 클래스로 객체를 만들 수 있다. -익명 클래스를 사용하는 이유는 프로그램 내에서 한번만 객체로 만드는데 사용되는 클래스를.. Step09_AbstractClass(abstract 사용 예시) MainClass02, Weapon, Gun MainClass02.useWeapon(new Gun()); static으로 선언했기 때문에 객체생성 없이 useWeapon을 호출할 수 있다. 또 같은 클래스 안에 있기 때문에 MainClass02는 생략 가능하다. (예시에서는 생략하지 않았다.) public static void useWeapon(Weapon w) useWeapon이 인자로 weapon type을 요구한다. main 메소드에서 useWeapon 메소드를 실행할때 weapon type 인자가 아닌 Gun type 인자를 전달했음에도 정상 작동하는 이유는 Gun class에서 Weapon을 상속(extends)받기 때문이다. console 창에 w.attack() 의 결과로 shot이 출력되는.. Step09_AbstractClass(추상클래스, 추상메소드) 추상(abstract) 클래스 클래스를 만들어서 우리에게 사용하도록 제공해주는 개발자가(유틸리티나 프레임워크를 공급해주는) 있다고 가정하자. 그 개발자는 특정 메소드를 우리의 상황에 맞게 구현하도록 미완성인 메소드를 제공할때도 있다. 미완성된 메소드를 추상(abstract) 메소드라고 하며 추상 메소드를 하나 이상 가지고 있는 클래스를 추상(abstract) 클래스라고 한다. 추상 메소드와 추상 클래스를 만들기 위해서는 abstract 예약어가 필요하다. 추상(abstract) 클래스 특징 - class 예약어 앞에 abstract 를 명시해서 클래스를 정의한다. - 형태만 정의되고 실제 구현은 되지 않은 메소드가 존재할 수 있다. - 형태만 정의된 메소드를 만들때는 abstract 예약어를 붙어서 메소.. 이전 1 2 3 4 5 6 7 다음