목록Language/Java (17)
코딜기
인터페이스 VS 추상 클래스1. 인터페이스는 추상 클래스보다 더 추상화된 개념입니다.추상 클래스는 추상 메서드와 일반 메서드를 모두 가질 수 있지만, 인터페이스는 추상 메서드와 상수 필드만을 가질 수 있습니다.인터페이스는 다중 상속이 가능하므로, 여러 개의 인터페이스를 동시에 구현할 수 있습니다.2. 인터페이스는 동일한 구현 및 동작을 강제하는 데 초점이 맞춰져 있습니다.인터페이스를 구현하는 클래스는 반드시 추상 메서드를 구현해야 하고, 이를 통해 다형성과 유연성을 제공합니다. 인터페이스는 주로 다형성과 유연성을 제공하는 데 사용되고, 추상 클래스는 코드의 재사용성과 확장성을 고려할 때 사용됩니다.추상 클래스는 상속이 기본 베이스이며, 개념의 확장이 주목적입니다.반면, 인터페이스는 객체들에게 동일한 메서..
인터페이스 (Interface)란?인터페이스는 구현하고자 하는 클래스에 동일한 목적 아래 동일한 기능을 수행하도록 강제하는 틀의 역할을 합니다.자바의 다형성을 극대화하여 개발 코드의 유지보수성을 높이고, 수정을 최소화하는 역할을 합니다.인터페이스 사용public interface Animal { //int i; (x) //public Animal() {} (x) public static final name = "Animal"; void move();}public interface Mammals { void feeding();}public interface Bird extends Animal { void fly();}인터페이스는 추상 메서드만 가질 수 있으며, 객체를 생성..
추상 메서드(Abstract Method)란?메서드 선언만 되어 있고, 메서드의 바디(중괄호 부분)가 없는 아직 완성되지 않은 메서드를 추상 메서드라고 합니다.형태만 구축되어 있고, 구체적인 구현은 없는 메서드입니다.추상 메서드는 반드시 추상 클래스 안에서만 선언할 수 있습니다.추상 클래스(Abstract Class)란?추상 메서드를 하나 이상 포함한 클래스를 추상 클래스라고 부릅니다.미완성 메서드를 포함하고 있기 때문에 객체를 직접 생성할 수 없습니다.추상 클래스를 상속받은 자식 클래스가 추상 메서드를 구현해야만 객체를 생성할 수 있습니다.부모가 완성하지 못한 메서드를 자식 클래스가 반드시 완성해야 부모와 자식의 객체가 모두 생성될 수 있습니다.추상 클래스 및 추상 메서드 사용public abstrac..
instanceof란?instanceof는 객체가 특정 클래스의 인스턴스인지 확인할 때 사용됩니다.다형성이 적용된 경우 부모 타입의 변수에 저장된 객체가 실제로 어떤 타입인지 확인하는 데 유용합니다.instanceof 사용public void sayHello(Animal ani) { if(ani instanceof Dog) { System.out.println("강아지"); } else if(ani instanceof Cat) { System.out.println("고양이"); } else if(ani instanceof Duck) { System.out.println("오리"); }}sayHello 메서드는 다형성이 적용된 매개변수를 받습니다...
다형성의 타입 캐스팅 (Type Casting)다형성은 객체 관리를 쉽게 해 주지만, 주의할 점도 있습니다.부모 타입으로는 자식 클래스의 모든 정보를 확인할 수 없다는 한계가 있습니다.객체 생성과 배열 사용에서의 다형성부모 타입 변수에 자식 객체를 생성했습니다.public class Parent { public int n1; void method1() {} void method2() {}}public class Child extends Parent { public int n2; @override void method2() {} void method3() {}}아래 코드를 보면 부모 클래스가 물려준 필드와 메서드는 정상적으로 호출되며, 자식이 오버라이드한 메서드도 사용..
다형성(Polymorphism)이란?다형성이란 하나의 객체가 여러 가지 타입으로 사용되는 것을 의미합니다.부모 타입 변수에 어떠한 자식 객체든 들어갈 수 있습니다.다형성은 상속을 전제 조건으로 합니다.객체 생성과 배열 사용에서의 다형성아래 그림을 보면 Animal이라는 부모 클래스가 있고, Dog, Cat, Duck 클래스가 존재합니다.모든 자식 클래스는 부모가 물려준 sound()라는 메서드를 본인의 클래스에 맞게 재정의(override)해서 사용하고 있습니다.위 사진을 참고하였을 때, 다형성이 적용되지 않았을 때는 아래와 같이 참조 변수의 타입을 객체에 맞게 작성해 주어야 합니다.Dog dog = new Dog();Cat cat = new Cat();Duck duck = new Duck();또한 각자..
super란?super 키워드는 상속받은 부모 객체를 참조할 때 사용하는 키워드입니다.'.'을 통해 부모 클래스의 필드나 메서드에 접근할 수 있으며, super()를 사용하여 부모 클래스의 생성자를 호출하는 것도 가능합니다.super 사용 (메서드)사람의 정보를 출력하는 간단한 Person 클래스(부모 클래스)를 만들어줍니다.public class Person { String name; int age; String info() { return "이름: " + name + ", 나이: " + age; }}Student 클래스(자식 클래스)를 만들고, Person 클래스를 상속받습니다.부모가 물려주는 메서드인 info()에 Student가 가지는 고유한 속성인 student..
오버라이딩(Overriding)이란?오버라이딩이란 부모 클래스로부터 상속받은 메서드를 자식 클래스에서 재정의하여 사용하는 것을 말합니다.이는 부모 클래스에서 정의된 메서드를 자식 클래스에서 다른 방식으로 동작하도록 변경하고자 할 때 필요합니다.만약 메서드가 자식 클래스에서 재정의되었다면, 자식 객체를 통해 메서드를 호출했을 때 부모 클래스의 메서드가 아닌, 자식 클래스에서 재정의된 메서드가 호출됩니다.오버라이딩 사용메서드 이름, 매개변수, 반환 타입이 부모 클래스의 메서드와 동일해야 합니다.부모 클래스의 메서드가 private이나 final로 선언되어 있다면 오버라이딩이 불가능합니다.접근 제한자는 부모 클래스의 메서드와 같거나 더 넓어야 합니다.public class Animal { public v..
상속(Inheritance)이란?부모 클래스가 가진 속성과 기능을 자식 클래스가 물려받는 것을 의미합니다.상속이 이루어지면 부모 클래스의 모든 필드와 메서드들이 자식 클래스에 상속되므로, 각 클래스마다 중복되는 속성과 기능을 일일이 작성할 필요가 없어집니다.상속을 통해 자식 클래스는 부모 클래스의 기능을 그대로 사용할 수 있으며, 자식 클래스만의 고유한 속성이나 메서드를 추가하여 기존 클래스를 확장할 수 있습니다.이로 인해 코드의 재사용성이 높아지고, 중복 코드가 줄어들며, 코드의 가독성과 유지보수성이 향상되는 이점이 있습니다.상속을 고려하지 않았을 때의 비효율성위 사진을 보면 각각 클래스는 다르지만, 가지고 있는 속성과 기능이 비슷한 것을 찾아볼 수 있습니다.모든 동물들 클래스가 name, age, ..
상수(Constant)란?상수는 고정된 불변의 값입니다.모든 객체가 해당 값을 공유할 수 있는 전역성을 가져야 하며, 동시에 값이 변하지 않는 불변성 또한 가져야 합니다.한마디로 static과 final의 성질을 둘 다 가져야 합니다.상수는 다른 일반 변수와의 차이를 위해 모든 글자를 대문자로 선언합니다.두 단어를 연결해서 선언하려면 _를 이용하여 연결해 줍니다.상수 선언누구나 공유할 수 있는 유일한 값을 보통 상수로 취급합니다.아래 예시에선 누구나 공유할 수 있는 유일한 값인 동시에 불변의 값인 지구의 반지름과 표면적을 상수로 선언해 보겠습니다.public class Earth { static final double RADIUS = 6400; static final double SURFAC..