● 수직 상속은 실무에서 많이 쓴다고한다. ex) 안드로이드 프레임워크
예시)
package model;
public class GrandParent {
private String name;
private int age;
public GrandParent(String name, int age) {
this.name = name;
this.age = age;
}
public GrandParent() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public void print() {
System.out.println(name);
System.out.println(age);
}
}
package model;
public class Parent extends GrandParent{
private String job;
public Parent(String name, int age, String job) {
super(name, age);
this.job = job;
}
public Parent() {
}
@Override
public void print() {
super.print();
System.out.println(job);
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
}
package model;
public class Child extends Parent{
String hobby;
public Child(String name, int age, String job, String hobby) {
super(name, age, job);
this.hobby = hobby;
}
public Child() {
// TODO Auto-generated constructor stub
}
@Override
public void print() {
// TODO Auto-generated method stub
super.print();
System.out.println(hobby);
}
}
○ 상속은 1개의 클래스만 받을 수 있다!!!
package main;
import model.Child;
import model.GrandParent;
import model.Parent;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
GrandParent gp1 = new GrandParent("홍길동", 80);
GrandParent gp2 = new GrandParent();
gp2.setName("김나나");
gp2.setAge(77);
gp1.print();
gp2.print();
Parent p1 = new Parent("홍철수", 55, "직장인");
p1.print();
Parent p2 = new Parent();
p2.setName("김영희");
p2.setAge(60);
p2.setJob("주부");
p2.print();
Child c = new Child("김가을",23,"학생","게임");
c.print();
}
}
● abstract class(추상 클래스)란?
: 메소드의 이름만 있고, 내용은 아직 정하지 않은 메소드가 존재한다.
→신입이 만들일 없다 고참이 만들어놓는다.
package model;
public abstract class GrandParent {
String name;
int age;
public abstract void print();
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
package model;
public class Parent extends GrandParent {
String job;
@Override
public void print() {
// TODO Auto-generated method stub
System.out.println(name);
System.out.println(age);
System.out.println(job);
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
}
package main;
import model.Parent;
public class Main {
public static void main(String[] args) {
Parent p = new Parent();
p.setName("홍길동");
p.setAge(55);
p.setJob("백수");
p.print();
}
}
● 상속받아서, abstract를 쓴 함수 이름을 이용해서 오버라이딩 해라!
● 다른거 만들지말고 이 함수로 하라고 함수이름을 정해주는것이다!
● abstract 한번이상 쓰면 클래스에 abstract 넣어준다.
'Java' 카테고리의 다른 글
ArrayList (0) | 2023.07.04 |
---|---|
인터페이스(Interface) (0) | 2023.07.04 |
실습: 학사관리 (0) | 2023.07.03 |
메소드 오버라이딩(Method Overriding) (0) | 2023.07.03 |
private와 상속 (0) | 2023.07.03 |