생성자_static_추상클래스(메서드)_interface_상속

2022. 1. 17. 10:53ksmart_Java/Java

728x90
목록
01 생성자메서드 오버로딩
02 static 정적키워드 - 변수와 메서드에 static
03 상속
- 메서드 오버라이딩
04 추상클래스와 추상메서드
05 interface (인터페이스)
- 상수와 추상메서드를 갖는다.
01 생성자 메서드 오버로딩
public int test(int a) {
	return 0;
}
public void test(int a,int b) {
	
}
더보기
User u01=new User();


User 클래스를 통해 생성된 u01 객체참조변수를 선언한다.

u01.setUid("id003");
String result=u01.getUid();


//default 생성자 메서드 선언

public User(){}

public User(String uid,String upw){
this.uid=uid;
this.upw=upw;
}


처리과정에 들어가면 User u01=new User("","");
바로 입력 할 수 있는 상태가 된다.
객체내의 데이터영역에 세팅 가능

생성자 메서드 오버로딩이 객체를 생성하면서
데이터영역에 객체를 생성할 수 있는 유일한 방법

각각을 호출해서 세팅한 걸 한방에 세팅 가능

디폴트생성자 메서드 선언 해주어야한다.

 

02 static 정적 키워드 - 변수와 메서드

새로운 객체를 생성하면 초기값이 0인 상태

total 변수가 static(정적으로 한곳에 고정) 으로 선언되어있으면 객체 내부에 존재하는것이 아닌 특정 메모리공간 한 곳에 고정되어있다.

클래스명.변수에 값을 세팅 가능하고 객체참조변수 b01.total =10 으로 값을 입력하면 모든 total 값이 10으로 변경된다.

더보기
package kr.or.ksmart.Static;
public class AA01 {
	public static void main(String[] args) {
		BB01.test();
		
		BB01 b01 = new BB01();
		BB01 b02 = new BB01();
		System.out.println(b01.total + "<-- b01.total");
		b01.total = 20;
		System.out.println(b02.total + "<-- b02.total");
		BB01.total = 30;
		System.out.println(b01.total + "<-- b01.total");
		System.out.println(b02.total + "<-- b02.total");
		System.out.println(BB01.total + "<-- BB01.total");
	}

}

 

package kr.or.ksmart.Static;

public class BB01 {
	int a = 0;
	int b = 0;
	static int total = 10;
	public static void test(){
		System.out.println("static메서드 test 실행");
	}
}

 

03 상속 - 메서드 오버라이딩

2022.01.17 - [SW개발/Java] - 메서드 오버라이딩_java

 

메서드 오버라이딩_java

메서드 오버라이딩이란 상속관계에 있는 부모 클래스에서 이미 정의된 메서드를 자식 클래스에서 같은 시그니쳐를 갖는 메서드로 다시 정의하는것 메서드 오버라이딩이란 상속받은 부모 클래

moon09-developer.tistory.com

메서드가 유사한 경우에 사용
부모클래스로부터 상속받은 클래스가 있다면 메서드 동작 처리과정 선언
그 선언된 내용이 메서드 오버로딩 하나의 클래스 내에서 메서드 오버라이딩 상속관계가 반드시 들어가야함
부모의 어떤 동작이 자식에게 물려줬는데 부모의 메서드를 그대로 쓸 수 있고 변형해서 쓸 수 있다.
변형해서 사용하는걸 메서드 오버라이딩이라고 한다.

메서드오버로딩
입력받을 개수 데이터타입 다르게
메서드 오버라이딩
입력받을 개수 데이터타입 그대로
메서드 처리과정의 일부 변경

 

04 추상 클래스와 추상 메서드

//일반 메서드 선언
public void test(){

}
//메서드 호출
test();


//추상 메서드 선언 - 바디 없어짐
public abstact void test();

//추상 클래스 내 : 추상메서드 선언 가능, 일반 메서드 선언 가능
abstract class Test{
   abstract void test();
}

자식 클래스에서 반드시 오버라이딩 해야만 사용할 수 있는 메서드

생산성이 향상되고 배포등이 쉬워진다.

작성되엉있지 않은 바디 부분을 자식 클래스에서 오버라이딩하여 사용

abstract class Animal{abstract void cry();}

class Cat extends Animal{void cry(){System.out.println("냐옹");}}
class Dog extends Animal{void cry(){System.out.println("멍멍");}}

public class Polymorphism{
  public static void main(Strin[] args){
    Cat c = new Cat();
    Dog d = new Dog();
    }
}


구현(implements) - 중괄호 열고 닫고 처리과정이 없으니 처리과정만 채워넣는개념
오버라이딩 기존 상속 개념과 똑같다.

더보기

CC01 클래스는 새로운 객체를 생성 할 수 없다.//abstract 클래스여서

 

05 interface ( 인터페이스 )

&nbsp;값을 변경하지 못하게 고정 10이라는 값을 고정시키는 상수의 개념

interface 내에 추상 메서드 선언 할 때 abstract선언 메서드가 없어도 추상 메서드로 자동 인식

CC01과 BB01 의 공통적 특성
- Testable01 interface로부터구현을 명령받은 cc01 클래스에서는 Testable01 interface 내에 있는 test01 추상 메서드를 구현해야 한다.
- 하나의 interface로부터 구현을 명령받는 클래스가 n개가 된다.
- test01 기능이 bb01 cc01 포함해서 n개의 클래스에서 필요하다면 testable01 interface로부터 구현을 명령을 여러가지에 시킬 수 있다.
- interface간의 상속개념 또는 다중 interface로부터 구현 명령을 시킬 수 있다
- interface는 하나인데 구현을 명령시킬 클래스가 여러가지라면
   --->interface에서 추상적으로 실행

//객체참조변수 선언
User u = new User();
//객체참조변수 하나 선언으로 interface로 구현을 명령받은 클래스 n개 할당 가능
interface data type 으로 Testable01 test;
test = new BB01();
test = new CC01();

 

728x90

'ksmart_Java > Java' 카테고리의 다른 글

메서드 오버라이딩_java  (0) 2022.01.17
입력처리_java  (0) 2022.01.17
setAttiribute_getAttribute메서드 사용법_Object_data_type_Java  (0) 2021.12.16
jsp 문법 구조_JAVA  (0) 2021.12.16
Setters_Getters_Java  (0) 2021.12.16