(JAVA)자바/(JAVA)자바 문법

(JAVA)자바 객체지향 언어 개념 중요 부분 총정리 part4 마지막

공부가싫다가도좋아 2021. 4. 29. 10:17
반응형

(JAVA)자바 객체지향 언어 개념 중요 부분 총정리 part4


1. 참조변수의 형변환

1) 자손과 조상 사이에서만 형변환이 가능하다.

2) 참조변수의 타입에 따라 사용할 수 있는 멤버의 개수가 달라진다. 

예1)

public class Chap16 {

	public static void main(String[] args) {
		class Phone{}
		class SmartPhone extends Phone{}
		class CellPhone extends Phone{}
		
		SmartPhone s = new SmartPhone();
		CellPhone c = new CellPhone();
		Phone p = new Phone();
		
        //조상인 Phone타입으로 형변환. 괄호 생략가능
		Phone p1 = (Phone)s; 
        
        //조상인 Phone타입으로 형변환. 괄호 생략가능
		Phone p2 = (Phone)c; 
        
        //자손인 SmartPhone으로 형변환, 괄호 생략 불가능
		SmartPhone s1 = (SmartPhone) p; 
		
	}

}

 

예2)

public class Test {

	public static void main(String[] args) {
		
		Phone p = new Phone();
		SmartPhone s = new SmartPhone();
		
		
		Phone p1 = (Phone)s; //조상타입으로 형변환
		p1.num();
		p1.color();
		p1.user();
	//	p1.name1();  에러!!!
		
		SmartPhone s1 = (SmartPhone) p;//자손타입으로 형변환 
		s1.num();
		s1.color();
		s1.user();
		s1.name1();
		
	}

}
class Phone{
	void num() {}
	void color() {}
	void user() {}
	
}

class SmartPhone extends Phone{
	void name1() {}
}

2. 추상 클래스(abstract class)

미완성 메서드 포함된 클래스, 인스턴스 생성 불가.

abstract class Phone{ //추상 클래스 
	abstract void num(int number);
}

class SmartPhone extends Phone{
	void num(int number) {} //추상 메서드 구현 
	void name1() {}
}

abstract class CellPhone extends Phone{
	void num(int number) {} //추상 메서드 구현 
}

 

추상 클래스 쓰는 예시

class SmartPhone {
	int x,y;
	void num(String x, int y) {}
	void name() {}
	void client() {}
}

class CellPhone {
	int x,y;
	void num(String x, int y) {}
	void name() {}
	void user() {}
	
}
//SmartPhone클래스와 CellPhone 클래스에서 
//공통된 부븐을 뽑아내어 하나의 클래스로 만들음
abstract class Phone{
	int x, y;
	abstract void num(String x, int y);
	void name() {}
	
}

class SmartPhone extends Phone{
	void num(String x, int y) {}
	void client() {}
}

class CellPhone extends Phone{
	void num(String x, int y) {}
	void user(){}
	
}

3. 인터페이스(interface)

인터페이스는 접근제어자로 public 또는 default만 사용할 수 있다.

조건

1. 모든 멤버변수는 public static final 이며, 생략 가능하다.

2. 모든 메서드는 public abstract 이어야 하며, 이를 생략할 수 있다.

(static 메서드와 default메서드는 예외)

interface Phone{
	void num(int x, int y);
}
interface Smart{
	void user(String name);
}


class SmartPhone implements Phone,Smart{
	public void num(int x, int y) {}  //public 안쓰면 에러!
	public void user(String name) {}
	
}

인터페이스 장점

1. 개발시간 단축

2. 표준화 가능

3. 서로 관계없는 클래스들에게 관계를 맺어줄 수 있음

4. 독립적인 프로그래밍 가능


4. 내부 클래스(inner class)

내부 클래스 장점

1. 내부 클래스에서 외부 클래스의 멤버들 쉽게 접근 가능.

2. 코드 복잡성 줄일 수 있음 (캡슐화)

class A{//외부 클래스
	class B{//내부 클래스
    }
}

5. 익명 클래스(anonymous class)

*클래스의 선언과 객체의 생성을 동시에 하기 때문에 단 한번만 사용될 수 있고 오직 하나의 객체만을 생성할 수 있는 일회용 클래스이다.

*생성자를 가질 수 없다.

*오로지 단 하나의 클래스를 상속받거나 단 하나의 인터페이스만 구현할 수 있음

public class Chap16 {
	Object iv= new Object() {void method(){}};
	
	void Method() {
		Object lv = new Object() {void method(){}};
	}
}

2021.04.26 - [(JAVA)자바/(JAVA)자바 문법] - (JAVA)자바 객체지향 언어 개념 중요 부분 총정리 part1

 

(JAVA)자바 객체지향 언어 개념 중요 부분 총정리 part1

자바 객체지향 언어 총정리 part1 1. 객체 지향 언어란? - oop(object-oriented-programming) : 객체지향 언어 - 객체지향 언어 특징은 크게 4 부분으로 나눌 수 있다. *캡슐화, 상속, 추상화, 다형성에 대한..

eunhee-programming.tistory.com

2021.04.27 - [(JAVA)자바/(JAVA)자바 문법] - (JAVA)자바 객체지향 언어 개념 중요 부분 총정리 part2

2021.04.28 - [(JAVA)자바/(JAVA)자바 문법] - (JAVA)자바 객체지향 언어 개념 중요 부분 총정리 part3

 

(JAVA)자바 객체지향 언어 개념 중요 부분 총정리 part3

자바 객체지향 언어 개념 중요 부분 총정리 part3 1. this() vs super() this() 는 같은 클래스의 다른 생성자를 호출하는데 사용. super() 는 조상의 생성자를 호출하는데 사용. public class Text { publ..

eunhee-programming.tistory.com

 

반응형