package j13_추상화.추상클래스;
//class 앞에도 abstract가붙는 다 추상메소드가 하나라도있으면 해당클래스는 추상클래스로 정의되어야 한다
//2.추상 클래스는 생성할수없다
//3. 그외의 다른 특징은 일반 클래스와 동일 하다
//4.추상클래스는 무조건 상속받아서 서야한다
//무조건 1:n관계이다
//상속은 1개만 가능
public abstract class Factory {
private String name;
public Factory(String name) {
this.name = name;
}
/**
* abstract 추상적인*/
public abstract void produce(String model);//구현이 필요가 없기에 바로;찍고 끝넴
public abstract void managemant();
public String getName() {
return name;
}
public void printinfo() {//추상클래스에서도 일반 메소드 정의 가능
System.out.println("공장 정보를 출력 합니다");
System.out.println("공장이름"+name);
}
}
package j13_추상화.추상클래스;
public class Main {
public static void main(String[] args) {
PhoneFactory phoneFactory = new PhoneFactory("애플 스마트폰 공장");
TabletFactory tabletFactory = new TabletFactory("애플태블릣공장");
phoneFactory.produce("아이폰14");
tabletFactory.produce("아이패드 프로5");
phoneFactory.printinfo();
tabletFactory.printinfo();
//Factory factory = new Factory(); 추상 클래스는 생성x
}
}
package j13_추상화.추상클래스;
public class PhoneFactory extends Factory {
@Override
public void produce(String model) {
System.out.println("[" + model + "]" + "모델 스마트폰을 생산합니다.");
}
@Override
public void managemant() {
System.out.println("태블릿 공장 관리");
}
public PhoneFactory(String name) {
super(name);
}
}
package j13_추상화.추상클래스;
public class TabletFactory extends Factory {
public void produce(String model){
System.out.println("["+model+"]"+"모델 태블릿을 생산합니다.");
}
@Override
public void managemant() {
System.out.println("태블릿 공장 관리");
}
public TabletFactory(String name) {
super(name);
}
}
이추상클래스는 클래스를 위한 틀이다 이걸 상속받아서 특정기능은 꼭만들도록 해주는 것이다
'웹 개발' 카테고리의 다른 글
웹 개발_java_2022/11/02_참조자료형캐스팅 (0) | 2022.11.03 |
---|---|
웹 개발_java_2022/11/01_인터페이스 (0) | 2022.11.02 |
웹 개발_java_2022/10/31_상속 (0) | 2022.10.31 |
웹 개발_java_2022/10/27~28_배열 (0) | 2022.10.31 |
웹 개발_ java_2022/10/27_접근지정자 (0) | 2022.10.27 |