티스토리 뷰
인터페이스의 타입변환 및 상속
인터페이스는 클래스와 마찬가지로 상속이 가능하다.
클래스와 달리 인터페이스는 다중 상속이 가능하다.
다음은 인터페이스 상속의 예이다.
Person.java
public interface Person {
public void setName(String name);
public String getName();
}
Gender.java
public interface Gender {
public void setGender(boolean male);
public String getGender();
}
Student.java
public interface Student extends Person, Gender{
public void setSchool(String school);
public String getSchool();
}
ImplementStu.java
public class ImplementStu implements Student {
private String name;
private boolean male;
private String school;
private int studentNo;
@Override
public void setName(String name) {
// TODO Auto-generated method stub
this.name = name;
}
@Override
public String getName() {
// TODO Auto-generated method stub
return name;
}
@Override
public void setGender(boolean male) {
// TODO Auto-generated method stub
this.male = male;
}
@Override
public String getGender() {
// TODO Auto-generated method stub
if(male == true)
return "남자";
else
return "여자";
}
@Override
public void setSchool(String school) {
// TODO Auto-generated method stub
this.school = school;
}
@Override
public String getSchool() {
// TODO Auto-generated method stub
return school;
}
public void setStudentNo(int studentNo) {
this.studentNo = studentNo;
}
public int getStudentNo() {
return studentNo;
}
@Override
public String toString() {
return "ImplementStu [name=" + name + ", male=" + male + ", school=" + school + ", studentNo=" + studentNo
+ "]";
}
}
StudentEx.java
public class StudentEx {
public static void main(String[] args) {
ImplementStu stu = new ImplementStu();
stu.setName("일월");
stu.setGender(false);
stu.setSchool("학교");
stu.setStudentNo(16010010);
System.out.println(stu.toString());
}
}
Student.java에서 보이는것처럼 다중상속이 가능한 것이 인터페이스의 가장 큰 특징이다.
자바에서는 인터페이스의 타입변환 또한 가능하다.
클래스의 상속에서, 강제 타입변환, 자동 타입변환이 가능했다.
인터페이스에서도 마찬가지로 클래스의 타입변환처럼 상속관계에서의 타입변환이 가능하다.
'JAVA' 카테고리의 다른 글
에러(Error)와 예외(Exception) (0) | 2019.09.24 |
---|---|
ArrayList와 Iterator를 이용한 성적관리 프로그램 (0) | 2019.09.24 |
익명구현객체(Anonymous class) (0) | 2019.09.23 |
Mail Client (0) | 2019.09.23 |
인터페이스(Interface) (0) | 2019.09.20 |
공지사항
최근에 올라온 글