반응형
추상클래스 : 몸체가 구성되어 있지 않은 메서드를 가지고 있는 클래스
즉, 선언되어 있으나 구현 되어 있지 않은 메서드, 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 |