728x90
-
자식 class를 제어할 목적으로 사용
-
자식클래스의 특징을 모아놓은 클래스
-
구현(정의)된 메소드와 선언된 메소드로 구성
-
스스로 객체생성 불가→ 후손 class 객체생성해서 사용
class 기본클래스
{
//정의(구현)된 메소드
void hello(){
}
}
class 추상클래스 {
//선언된 메소드
void hello();
//정의메소드
void goodBye(){
}
}
interface 인터페이스
{
//선언된 메소드만
void hello();
}
추상클래스 형식
abstract class 클래스명{
//필드선언
public void hello(){}; //구현된(정의된) 메소드
abstract void print(); //선언된 메소드
※주의: 선언된 메소드를 사용하는 경우 반드시 abstract 명시
}
abstract class 클래스명 {
변수선언
구현(정의)메소드 / void print() {};
추상메소드 / abstract void print(); =>abstract 생략시 에러
}
//클래스 사용 -> 객체생성해서 사용
class A { void hello(){} }
//인터페이스 사용 -> 클래스에 구현(implements)해서 사용
interface B {void hello(); }
=> class A implements B {void hello(){} }
//추상클래스 사용 -> 자식클래스 객체생성해서 사용
abstract class Parent {abstract void print(); }
=> class Child extends Parent {void print() {} }
class Parent{}
class Child extends Parent{}
메소드 정의
public void hello(Child c){
}
public void goodBye(Parent p) { //Parent p = new Child();
}
메소드 호출
hello(new Child());
Child cc = new Child();
hello (cc);
hello(new Parent()); (x) //부모는 자식에 대한 정보를 모른다.
//자식객체에 부모객체가 들어갈 수 없다.
goodBye(new Parent());
Parent pp = new Parent(); // new Parent() 자체를 데이터로 생각할 것
goodBye(pp);
goodBye(new Child()); // (o)
void a(String str) {
}
String b(int su) {
return "안녕하세요";
}
int c() {
return 500;
}
-----------
a( b( c() ));
//실행순서 c메소드->b메소드->a메소드
- c의 데이터가 int값으로 나와서 b의 매개변수로 들어감=> b의 데이터가 String값으로 나와서 a의 매개변수로 들어감
- 데이터를 리턴하지않는 void는 메소드의 매개변수에 들어갈 수 없다.
'Web develop > JAVA' 카테고리의 다른 글
[JAVA] 자바 String 클래스 종류 및 사용법 (0) | 2019.04.25 |
---|---|
[JAVA] 자바 클래스 객체생성법 (0) | 2019.04.24 |
[JAVA] 자바 배열(Array) (0) | 2019.04.24 |
[JAVA] 자바빈즈(JavaBeans) (0) | 2019.04.24 |
[JAVA] 자바 인터페이스 형식, 사용 예시 (0) | 2019.04.23 |