자바 6일차

 

 6. 다형성(생성자, 메서드)의 오보로딩, this



▶ 생성자, 오버로딩, this, static, Varargs

Ex) PersonTest.java(Person Class생성)

 Person   

Ex) TV.java                         

TV

Ex) TVHandling.java(다른패키지에 있을경우)

TVHandling


• 생성자

(1) 멤버변수에 값을 저장(맨 처음 저장시킴)
-> 초기화
(2) 형식) [접근지정자] 반환형 클래스명() {}
void, int, String,,
=> 반환형을 쓰지 않는다.(void X)
=>default Constructor(기본생성자)
(3) 차이점 -> 임의로 호출할 수가 없다.
-> 객체를 생성시킬때만 자동호출이 되는 메서드
-> ex)신용카드 결재 –> 문자메세지 전달

=>게시판에 글쓰기-> 존재X->존재O , 글수정->존재O->내용을 변경

메서드오버로딩(Overloading) – > 같은 메서드이지만 매개변수의 갯수와
매개변수의 자료형을 다르게 줌으로써 마치 다른 메서드를 호출하게 하는 기법

생성자의 오버로딩 -> 여러개를 작성 ————–> 다양하게 초기값을 부여

메서드 오버로딩 -> 생성자 오버로딩-> 반환형, 접근지정자와는 오버로딩과 상관없다.

생성자-> 멤버변수의 값을 다양하게 초기화 -> 다른 메서드를 호출할 수가 있다.


Ex) PrintTest.java(생성자 오버로딩)            

PrintTest

Ex) ThreeTest.java(최대값을 구해주는 프로그램)

ThreeTest

Ex) RectHandling.java(직사각형의 면적을 구하는  프로그램)

RectHandling


• 메서드(=부하직원)

main(사장)->부장–>과장->대리->사원

1. main()-> 일반메서드 호출
->객체명.일반메서드명(~)
2. 생성자  –> 자기 클래스내부의 다른 메서드호출
->객체명.일반메서드명(~)
->객체명을 생략-> 일반메서드명(~)

Ex) MethodEx.java(매개변수(O),반환값(O)->계산목적, 출력목적)

MethodEx


• this 키워드

1) 생성자 또는 메서드의 매개변수값이 멤버변수와 같게되면 멤버변수와 매개변수를
구분할 수가 없다.(구분 -> this.멤버변수 = 매개변수)
2) this -> 현재 생성된 객체를 가리키는 예약어
생성자?->오버로딩?->this를 부여=>static이유?

Ex) ThisTest.java                       

ThisTest

 Ex)ThisTest2.java(자기 자신을 가리키는 예약어)

ThisTest2

(1) 메서드의 종류

1.일반메서드 => 객체생성(메모리공간)
->(=int와 같다)->4byte
-> 메서드호출
=> 특별한 기능을 가진
2.정적메서드 => 객체생성하지 않아도 메서드호출
(자주 사용, 반복적인 구문의 보편적인 기능)
==>클래스명.정적메서드명()
=>비유) 돈을 지불->클릭->커피(객체)

접근지정자 static 반환형 메서드명(~){}
3. 재귀메서드-> 자기가 자신을 호출하는 메서드
=>팩토리얼 계산
 Ex) FactoriError.java -> secure 코딩

FactoriError
 ※ showHi(cnt–); => showHi(cnt); cnt=cnt-1;
Ex) FactoriTest2 -> secure 코딩

FactoriTest2


● package문과 import구문

kr.co.acorn.chongmu.~;// (도메인이름의 역순)

import=>#include stdio.h ==>외부의 클래스를 불어오는 방법 기술

내가 작성한 클래스를 불러오는 방법
외부의 클래스를 불러오는 방법

Ex) AbsTest.java(절대값을 구해주는 프로그램)

Math.abs(-23)==>23

AbsTest

♦ 다음시간

1. this의 두번째기능 =>p.133(생성자에서 다른 생성자 호출)
2. 배열=>p.252~p.266(이차원 배열)-> 시큐어코딩=>문제풀이
3. 상속 앞부분
 


과제풀이)==> 메서드 작성
=>OpMethod.java저장
=>두개의 정수를 전달받아서, 두수의 사칙연산
연산결과를 출력시켜주는 메서드(simpleOpr)와 이 메서드를 호출하는 main()를 작성하시오.
(단 나눗셈은 몫과 나머지를 각각 출력하시오)

OpMethod

일반메서드 또는 정적메서드
=> import 구문을 이용
j217->OpMethod.java->일반, 정적메서드
|           simpleOpr(7, 3)
j217.abc->>OpMethod2.java(main())

OpMethod2