본문 바로가기

JAVA

(158)
Interface review // interface : // 각 클래스가 공통 인터페이스를 구현함으로써 통일된 동작을 제공하고, 다른 클래스와 상호 작용할 수 있도록 함 // --> 상속 용도의 클래스..! 근데 일종의 계약이야. // --> 인터페이스를 구현하는(= 계약한) 클래스는 해당 인터페이스에 정의된 모든 메서드를 반드시 구현해야 힘 // --> 이때, implements 키워드를 사용하여 클래스가 특정 인터페이스를 구현한다고 선언한다!! // 이제 main에 클래스 대신 interface를 선언 --> 싹다 추상화임 // 인터페이스는 하위 클래스에서 구현될 '메소드만 선언하고, 구현은 하지 않는다' // ★★★ 메소드는 무.조.건. public!!! (일반적 표현방법 : public + return타입 + 매소드명 + (..
interface 활용ex - self // 하위티어에서 구현할 메서드를 선언하는 인터페이스 생성 interface Occupation{ String print();// --> 하위 티어에서 오버라이딩할 메서드라고 생각하자. } class Student implements Occupation{ private String name; private String doWhat; Student(String name, String doWhat){ this.name = name; this.doWhat = doWhat; } public String print() { return "이름 : " + name + ", 하는일 : " + doWhat; } } class Nurse implements Occupation { private String name; pr..
Abstract Class_ 스타ex활용 // Abstract Class : 클래스, 메서드 또는 속성을 추상적으로 정의할 때 사용 (= 정말 상속만을 위해 정의된 클래스.) // --> 추상 클래스는 객체를 직접 생성할 수 없으며, 하위 클래스에서 추상 메서드를 구현해야 함 // --> 추상 클래스는 상속과 다형성을 구현하는 데 사용됨 // Abstract Method : 메서드의 시그니처만 선언되고 메서드의 본문은 제공되지 않는다. // ★★★답정너 : abstract class를 상속받은 하위클래스는 무조건! abstract된 메서드를 오버라이딩 해야한다 ★★★ // --> 근데 abstract 잘안써^^...; 이유는 다음 클래스에서....ㅎ abstract class Unit{ int hp; int ap; int speed; //voi..
Overiding // 상속 + 다형성 + 오버라이딩 TIP : 문법과 런타임을 다르게 생각하자! class AAA{ int a1; int a2; void print() { System.out.println("AAA의 print메서드란다"); } void qqq() { System.out.println("AAA의 qqq메서드"); } } class BBB extends AAA{ void test() { System.out.println("BBB의 test메서드란다"); } // ★★★ 오버라이딩 문법 --> 하위 클래스가 상위 클래스의 메서드를 '재정의'하는 과정 //--> 상위 클래스의 메서드와 동일한 이름, 매개변수 목록, 반환 유형을 가져야 함 ★★★ // (메소드명, 파라메터, 리턴타입) void print() {..
상속_array활용3 // Person 및 하위 클래스 정의 class Occupation{ private String name; public Occupation(String name){ this.name = name; } // 오버라이딩할 메서드 public String print() { return "이름 : " + name; } } class Student extends Occupation{ private String doWhat; public Student(String name, String doWhat) { super(name); this.doWhat = doWhat; } public String print() { return super.print() + ", 하는일 : " + doWhat; } } class Nur..
File I/O _ load // 로드 // 파일에서 데이터를 읽어오기 위해 FileInputStream 및 DataInputStream을 사용하자! // FileInputStream : 파일로부터 바이트 단위로 데이터를 읽어오기 위한 스트림을 생성 // file : 파일의 경로와 이름을 나타내는 File 객체나 파일 경로 문자열 // DataInputStream : FileInputStream으로부터 읽어온 데이터를 다양한 자료형으로 읽어올 수 있는 스트림을 생성 File file = new File("C:\\tempFolder\\qqq.qqq"); try(FileInputStream fis = new FileInputStream(file)){ DataInputStream dis = new DataInputStream(fis); ..
File I/O Basic // 파일 입출력(File I/O) : low레벨의 API는 사실상 쓸일이 많지 않다 # 특징 // 컴퓨터에서 파일을 읽어 들이거나 파일에 데이터를 쓰는 작업 // 파일 입출력은 데이터의 저장, 읽기, 수정, 삭제 등과 관련된 다양한 작업에서 사용 // File 클래스가 따로 있당. // File file = new File("C:\\tempFolder\\ttt\\a\\b\\c"); // 헤헤 특수문자 쓰고싶으면 \이거 썼어야했지 ^_^V # 구조1 FileOutputStream fos = null; try { fos = new FileOutputStream(file); }catch(Exception e) { e.printStackTrace(); }finally { try { fos.close(); }c..
Stream활용 예시 // 빈공간에 우클릭 -> source -> generate... (ex. 생성자를 불러오려면 constructor겠지) // class Student, StudentEntity의 기본생성자, full생성자, setter, getter가 모두 정리돼어있다고 가정 (블로그올리기엔 너무 크당!) List list = new ArrayList(); list.add(new Student("한조", 80, 99)); list.add(new Student("트레", 10, 45)); list.add(new Student("티모", 8, 50)); list.add(new Student("다리우스", 73, 100)); list.add(new Student("스웨인", 45, 74)); list.stream() .fi..