3초기억력

제어자)abstract 본문

자바_기초

제어자)abstract

잠수콩 2019. 6. 7. 15:52
//abstract 제어자 : 추상의, 미완성의 클래스, 메서드...
// 	추상메서드 : 아무런 일도 하지 않는 메서드로 {} 블록을 가지지 않는 메서드
//	추상메서드를 만드는 이유 : 상속받은 자식클래스에 무조건 오버라이드 시켜서 꼭 실행해야되는 문장을 만든다.
//	자식클래스에서 사용하고 싶은데로 써라. 다중상속은 안된다.

//	추상메서드를 하나라도 가지고 있는 클래스는 무조건 추상클래스로 변경이 되야한다.
//	-불완전하기 때문에 객체를 생성하지 않는다.

// 	추상클래스는 다른 클래스들의 객체 생성시 도움을 줄 목적으로 사용한다.

// 	인터페이스의 구성은 추상메서드!
//	추상클래스를 구성하는 멤버
//	인스턴스변수 가능, 인스턴스 메서드 가능
//	추상메서드, 클래스변수 선언!

// 	추상클래스에 인스턴스메서드(구현부있는 메서드)
//	자식클래스에서 오버라이드 대상에서 제외된다.

//유닛 공격
abstract class Unit{	
//	void attack() { System.out.println("기본공격"); }			//굳이 쓸필요없다.
	
//	void attack2();		//내용없는 메서드를 생성시 빨간줄 생긴다. 클릭하면 abstract 가 붙고 {} 가 필요없다.
						//class 명 앞에도 abstract 가 붙어야 된다. 
	abstract void attack2();	
}

class Marine extends Unit{				//빨간줄 1번 클릭시 override 생성

	@Override
	void attack2() {
		System.out.println("총 공격");
	}	
}

abstract class Tank extends Unit{			//빨간줄 2번 클릭시 abstract 가 붙어야한다.
	
}

// 어떤 모양
abstract class Shape extends Point{
	
	int x, y, w, h;			//
	static int num;		//몇번째
	
	abstract void draw();
	
	void print() {
		System.out.println("현재 : X >"+ x +", Y >"+ y);
	}
}

class Line extends Shape{

	@Override
	void draw() {
		System.out.println("선그리기");		
	}

	@Override
	void MyPoint() {
		this.print();
		
	}

}

//좌표찍기. 상속이 될까?
abstract class Point{
	int x, y;
	
	abstract void MyPoint();
}

//추상메서드끼리 다중상속이 되나?
/*
abstract class YY{
	abstract void y();
}

abstract class shape2 extends YY, Point{
	abstract void draw2();
}
*/
//다중상속이 안된다.

public class AbstractEx {

	public static void main(String[] args) {
		
		//유닛 공격
		Marine m1 = new Marine();
		m1.attack2();
		
		//선그리기
		Line l1 = new Line();
		l1.x = 100;
		l1.y = 200;
		l1.draw();
		l1.MyPoint();
		
		Shape s1 = new Line();
		s1.x = 300;
		s1.y = 400;
		s1.MyPoint();
		
		Point p1 = new Line();
		p1.x = 1000;
		p1.y = 2000;
		p1.MyPoint();
		

	}

}

'자바_기초' 카테고리의 다른 글

[KISA] 캐슬 Log4j 취약점 관련 CRS Rule 업데이트  (0) 2022.01.14
접근제어자) default  (0) 2019.06.07
접근제어자) protected  (0) 2019.06.07
접근제어자) private  (0) 2019.06.07
접근제어자) public  (0) 2019.06.07
Comments