public abstract class House { //추상 클래스
public void methodOne(){
System.out.println("method one");
}
public abstract void methodTwo(); //추상 메소드
}
추상 클래스
는 클래스의 일부 기능을 구현하지 않고 확장하기 위해 사용되고, 인터페이스
는 클래스가 어떤 동작을 해야 하는지 정의하기 위해 사용됩니다. 추상 클래스
는 단일 상속만을 지원하고 인터페이스
는 다중 상속을 지원합니다.Object 클래스는 자바의 기본적인 기능과 메서드를 제공합니다. 여기에는 모든 객체가 가지는 메서드인 equals(), hashCode(), toString() 등이 포함됩니다. 이러한 메서드들은 모든 객체에서 사용할 수 있으며 필요에 따라 재정의(Overriding)할 수도 있습니다.
equals()
메서드는 두 객체의 동등성을 비교하는 데 사용됩니다. hashCode()
메서드는 객체의 해시 코드를 반환합니다. toString()
메서드는 객체의 문자열 표현을 반환합니다. 이 외에도 getClass() 메서드를 사용하여 객체의 클래스 정보를 가져올 수 있고, wait(), notify(), notifyAll() 등의 메서드를 사용하여 객체 간의 동기화를 관리할 수 있습니다.
Object 클래스의 메서드를 재정의할 때는 일반적으로 equals(), hashCode(), toString() 메서드를 자신의 클래스에 맞게 구현하는 것이 좋습니다. 이렇게 하면 객체의 동등성 비교, 해시 계산, 문자열 표현 등을 정확하게 처리할 수 있습니다.
Member obj1 = new Member("Black");
Member obj2 = new Member("Black");
Member obj3 = new Member("White");
System.out.println(obj1.equals(obj2)); // true가 출력
System.out.println(obj1.equals(obj3)); // false가 출력
class Member {
String color;
Member() {
}
Member(String color) {
this.color = color;
}
public boolean equals(Object obj) {
Member member = (Member) obj;
if (color.equals(member.color)) {
return true;
}
return false;
}
}
public class ObjectClass {
public static void main(String[] args) {
Member obj1 = new Member("Black");
Member obj2 = new Member("Black");
Member obj3 = new Member("White");
System.out.println(obj1.equals(obj2));
System.out.println(obj1.equals(obj3));
}
}
Circle circle = new Circle(10);
System.out.println(circle); //원의 넓이는 314.1592 이고 반지름은 10 인원
class Circle {
int radius;
Circle(int radius){
this.radius = radius;
}
public double getArea() {
return radius*radius*Math.PI;
}
public String toString() {
return "원의 넓이는 " + this.getArea() + "이고 반지름은 " +radius +" 인 원";
}
}
public class Main {
public static void main(String[] args) {
Circle circle = new Circle(10);
System.out.println(circle);
}
}
1994 년 자바 1.0 - 제임스 고스링에 의해 Sun 사에서 나옴.
1.5 버전에 아래의 내용이 추가됨.
Generic(지네릭)
foreach 루프
autoboxing/unboxing
enum
Annotation @
1.8 버전 람다와 스트림이 추가됨