반응형

추상클래스 : 몸체가 구성되어 있지 않은 메서드를 가지고 있는 클래스 

즉, 선언되어 있으나 구현 되어 있지 않은 메서드, abstract로 선언함.

 1. 추상클래스는 서브 클래스에서 오버라이딩 하여 구현해야 함.

package hello;

abstract class Car{
	int speed = 0;
	String color;
	void upSpeed(int speed) {
		this.speed += speed;
	}
}
class Sedan extends Car{
}
class Truck extends Car{
}
public class AbstractClassExample{
	public static void main(String[] args) {
		Sedan sedan1 = new Sedan();
		System.out.println("승용차 인스턴스 생성~");
		Truck truck1 = new Truck();
		System.out.println("트럭 인스턴스 생성~");
	}
}
package hello;
abstract class Pokemon{
	
	private String name;
	abstract void attack();
	abstract void sound();
	Pokemon(String name) {
		this.name = name;
	}
	public String getname() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}
class Pikachu extends Pokemon{
	public Pikachu() {
		super("피카츄"); 
	}
	void attack() {
		System.out.println("전기 공격");
	}
	void sound() {
		System.out.println("피카피카");
	}
}

class Squirtle extends Pokemon{
	public Squirtle() {
		super("꼬북이"); 
	}
	void attack() {
		System.out.println("물 공격");
	}
	void sound() {
		System.out.println("꼬북꼬북");
	}
}

public class Sample{
	public static void main(String[] args) {
		Pikachu s = new Pikachu();
		System.out.println("이 포켓몬의 이름은 : " + s.getname());
		s.attack();
		s.sound();
		Squirtle a = new Squirtle();
		System.out.println("이 포켓몬의 이름은 : " + a.getname());
		a.attack();
		a.sound();
	}
}
package hello;

abstract class Car{ 
	private int speed = 0;
	private String name;
	public Car(String name){
		this.name = name;
	}
	void upSpeed(int speed) {
		 this.speed += speed;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	abstract void work();
}

class Sedan extends Car{
	public Sedan(String name) {
		super(name);
	}
	void work() {
		System.out.println(super.getName() +"가 사람을 태우고 있습니다.");
	}
}
class Truck extends Car{
	public Truck(String name) {
		super(name);
	}
	
	void work() {
		System.out.println(super.getName() + "이 짐을 싣고 있습니다.");
	}
}

public class AbstractMethodExample{
	public static void main(String[] args) {
		Sedan sd = new Sedan("빨간 승용차");
		sd.work();
		Truck tk = new Truck("노란트럭");
		tk.work();
	}
}
package hello;

abstract class Calculator{
	public abstract int add(int a, int b);
	public abstract int subtract(int a, int b);
	public abstract double average(int[] a);
}
public class GoodCalc {
	public int add(int a, int b) {
		return a + b;
	}
	
	public int subtract(int a, int b) {
		return a - b;
	}
	public double average(int[] a) {
		int sum = 0;
		for(int i=0; i<a.length; i++) {
			sum += a[i];
		}
		return sum/a.length;
	}
	
	public static void main(String[] args) {
		GoodCalc a = new GoodCalc();
		System.out.println("2 + 3 = " + a.add(2,3));
		System.out.println("2 - 3 = " + a.subtract(2, 3));
		System.out.println("(2 + 3 + 4)/3 = " + a.average(new int [] {2,3,4}) );
	}
}
반응형

'JAVA > 문법' 카테고리의 다른 글

[JAVA] 예외처리  (0) 2020.01.05
[JAVA] 인터페이스 구현  (0) 2020.01.04
[JAVA] 클래스  (0) 2019.12.22
[JAVA] 배열 2  (0) 2019.12.15
[JAVA] 배열  (0) 2019.12.15

+ Recent posts