Java27 추상 클래스 ( Abstract Class ) / 인터페이스 ( Interface ) 추상 클래스 ㅡ 클래스를 설계도라고 하면 추상 클래스는 미완성 설계도 ㅡ 추상 클래스는 인스턴스 생성 X, 상속을 통해 하위 클래스에서만 완성 ㅡ 추상 메서드를 포함하는 것 말곤 일반 클래스와 유사함 abstract class 클래스 명 { } ← 이렇게 생성 추상화 : 클래스 간의 공통점을 찾아내서 공통 상위 클래스 만드는 작업 구체화 : 상속을 통해 클래스 구현 [ 확장 ] *추상 클래스를 상속한 클래스는 추상 클래스의 메서드를 작성해줘야 한다. 추상 메서드 ㅡ 선언부만 작성, 구현부는 작성하지 않는다. ㅡ 하위 클래스에서 구현부를 작성한다 abstract class Animal { String arms; String legs; abstract void eat(); // {} 코드 블럭은 적지 않는다.. 2023. 1. 10. 다형성 ( Polymorphism ) 다형성 ㅡ 하나의 객체가 여러 형태를 가지는 것을 의미 ㅡ 부모 클래스의 참조 변수로 자식 클래스의 인스턴스 참조 ㅡ 다형성은 상속, 추상화와 같이 객체지향 프로그래밍의 특징 중 하나 형 변환 [ 서로 상속 관계인 클래스만 ] 자식 타입 → 부모 타입 : 형 변환 생략 가능 부모 타입 → 자식 타입 : 형 변환 생략 불가능 / 명시해줘야 한다. 참조 변수의 타입을 변환하는 것 뿐 인스턴스에는 영향을 미치지 않는다. 형 변환을 통해 인스턴스에서 사용할 수 있는 멤버의 범위를 조절 class Animal { String ears; String eyes; String legs; } class Monkey extends Animal { String arms; Monkey(String arms, String ey.. 2023. 1. 10. HashMap 알고리즘 풀이 후 다른 사람의 풀이를 보던 중 HashMap을 활용한 방법이 있어서 찾아보았다. HashMap ㅡ Map 인터페이스를 구현(implements)하고 있는 클래스 ㅡ 키(key), 값(value)로 구성 ㅡ Java Collections Framework에 속한 구현체 개념은 간단하게 이 정도에 key에 value를 저장해놓고 데이터를 사용하는 식인 것 같다. 장점으로는 데이터를 저장해 놓고 쓰기에 속도는 매우 빠르다고 한다. ★ key는 고유 속성으로 중복이 불가능 ★ value는 고유 속성이 아니라 중복 가능 HashMap 선언 HashMap 참조 변수명 = new HashMap() // 이외에도 여러 선언 형태가 있긴하다. HashMap hm = new HashMap(); // int.. 2023. 1. 10. 상속 ( Inheritance ) / 오버라이딩 ( Overriding ) 상속 ㅡ 기존 클래스를 재사용하여 새로운 클래스 작성 ㅡ 코드의 재사용성, 유지보수에 효과적 ㅡ 생성자는 상속 X class (자식)클래스명 extends (부모)클래스명 { // ... } 부모 클래스 = 상위(super) 클래스 자식 클래스 = 하위(sub) 클래스 하위 클래스는 상위 클래스의 멤버 변수나 메서드를 기본적으로 사용할 수 있다. → 하위 클래스의 인스턴스를 생성하면 상위 클래스의 멤버 변수 초기화나 메서드 호출이 가능하다. * 자바에선 다중 상속이 안된다. class SmartPhone { String number; void call(String telNumber) { System.out.println(number + " 에서 " + telNumber + " 로 전화합니다."); } }.. 2023. 1. 9. 생성자 ( Constructor ) / this 생성자 ㅡ 인스턴스 생성 때 호출되는 인스턴스 초기화 메서드 / 인스턴스 변수 초기화에 사용 ★ 생성자 이름은 클래스의 이름과 동일해야한다. ㅡ 메서드와 비슷해보이나 생성자는 리턴 값이 없음 ** 메서드도 반환타입이 void인 경우 리턴이 없어도 되긴함 ㅡ 모든 클래스는 생성자가 반드시 하나 이상 필요 / 따로 생성자를 선언하지 않으면 컴파일러가 자동으로 기본 생성자 생성 // 기본 생성자 클래스명() {} Juice cola = new Juice("coke", "coca-cola", 200, 1000); // 생성자 매개변수로 인해 인스턴스 생성과 동시에 변수 초기화 Juice 클래스에 있는 String 변수 2개, int 변수 2개의 값을 실행과 동시에 초기화 → 생성자 class Juice{ Str.. 2023. 1. 6. 오버로딩 ( Overloading ) 오버로딩 ㅡ 한 클래스 내에 같은 이름의 메서드를 여러개 정의 하는 것 ㅡ 이름이 같은 메서드여도 매개변수의 갯수와 데이터 타입에 따라 구분한다. public class Test{ void speed(int w) { System.out.println(w + "로 걷기"); } void speed(float r) { System.out.println(r + "으로 달리기"); } void speed(int w, float r) { System.out.println(w + "로 걷고 " + r +"으로 달리기"); } public static void main(String[] args) { Test test = new Test(); test.speed(2); test.speed(13F); test.speed.. 2023. 1. 6. 이전 1 2 3 4 5 다음