본문 바로가기
(JAVA)자바/(JAVA)자바 문법

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

by 공부가싫다가도좋아 2021. 4. 29.
반응형

(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

 

반응형

댓글