일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- SAP
- 자바
- 파이썬
- node.js
- sap mm
- 유럽여행
- IT
- nodejs
- Spring Framework
- oracle
- ABAP
- docker
- Python
- 영어
- SAP ABAP
- 딥러닝
- 오라클
- 오라클 디비
- 비지니스영어
- SAP ERP
- db
- Programming
- 노드
- Mac
- 도커
- 자바스크립트
- JavaScript
- Java
- 머신러닝
- Oracle DB
Archives
- Today
- Total
JIHYUN JEONG
[java] 엄마도 이해하는 자바 기본 2일차 본문
□ Method (AM 09:00 ~ 10:00)
Method = 함수 , 특정한 행위를
하는 것
○ public static void go () {}
- public static :
modifier
- void : return
type
- go : method
name
- () :
parameter list
- {} : method
body
○ Method
사용 단계
1. method
정의
2. method
호출
[예시]
□ Method 만들기
(AM 10:00 ~ 11:00)
1. 정수형 매개변수
2개를 받아 그합을 돌려주는 sum()
2.
문자열 변수 하나를 매개변수로 받아 그 문장열 뒤에 "hello"를 추가해 돌려주는 addString()
3.
문자열 변수 하나를 매개변수로 받아 그 문자열 앞에 "hello"를 추가해 출력하는 printString()
4.
정수형의 반지름 값을 입력 받아 원 면적을 계산해 return하는 getArea()
5.
논리형 변수 두 개를 입력 받아 두개 모두 참이면 true, 그렇지 않으면 false를 return하는 result()
6.
static int count = 300;
public static
void go() {
System.out.println(count);
}
1) go()를
사용하는 문장
2) 다음 문장의 틀린
부분을 고치시오.
system.out.println(go());
Method
만들기
2.
정수형 변수 두개를 입력 받아 그 중 큰 수를 return하는 max()
3.
논리형 변수 한개를 입력 받아 그 값을 반대로 바꿔 return 하는 reverse()
□
생성자 (PM 1:00 ~
2:00)
○ Test t = new
Test();
1. Heap에 객체를 위한 공간
할당
2. instance 변수 자동
초기화
3. instance 변수 명시적
초기화
4. 생성자
호출
5. 참조값
반환
※ instance 변수 = member
field field 속성, attribute
※ default 생성자를 추가 해 놓지
않고 디폴트 생성자를 사용할 수 없다.(매개변수 생성자를 정의해 두었을 시)
※ 클래스 안에 생성자가 하나가 있으면
VM이 자동으로 디폴트
생성자를 제공하지
않는다.
□
Constructor - Car / Circle
□
Constructor - Car
Constructor
with parameters
- Car(int
num) {}
Car(int
num, String model) {}
Car(int
num, String model, String owner) {}
→ main()에서
각 생성자 이용해서 객체 생성하기
□
this()
- 생성자에서 생성자 호출 (생성자
안에서만 쓴다)
public Car()
{
this(0);
}
public Car(int
num){
this.num =
num;
}
→ 위에 경우는 this(0)은 아래에
있는 int num 파라미터로 찾아가게 된다
□
생성자 호출
- Car(int num)
{}
Car(int num, String
model) {}
Car(int num, String
model, String owner) {}
=> this를
사용하여 생성자 안에 생성자를 사용 할것
□
Method Overloading
- 한 클래스 내에서 동일한 이름의
메소드를 여러 번 정의해 놓는 일
- 각각의 매소드는 파라메터 리스트로
구분함
- public void go()
{}
- public void go(int a)
{}
- Ex) class
Math
=> go()
라는 메소드가 오버로딩 되어 있다.
□
객체지향 언어의 특징 (2:00 ~ 3:00)
1.
상속 (Inheritance)
2.
정보은폐 (Information Hiding, EnCapsulation)
3.
다형성 (Polymorphism)
□
상속
○ 새로운 클래스를 설계할 때 기존 클래스의 내용을 물려 받는
것
○ 기존
클래스의 내용을 바탕으로 새로운 클래스를 설께하는 것
○
Keyword "extends"
class Parent
{}
class Child extends Parent
{}
□
Pr) Parent / Child
[예시]
public
class Parent {
String name =
"Tom";
String address =
"Seoul";
public String getName()
{
return name;
}
public String
getAddress(){
return
address;
}
}
public class Child extends Parent{
int age
=30;
public static
void main(String[] args) {
Child c = new
Child();
System.out.println(c.getName());
System.out.println(c.getAddress());
}
}
□
Method Overriding
- 부모 클래스로부터 상속받은 메소드를
자식 클래스에서 재정의 하는 것
- Pr) Child
클래스에서 getName() overriding 하기
※ 모든 상속관계에서 부모가 자식보다 항상 훨씬
큼
※ 메소드 오버라이딩은 타입과 상관없이 무조건 자식꺼
사용
Ex) Parent c = new Child();
(O)
2. Parent c를 사용시도 | 1. Child c 생성됨 |
|
즉 범위는 Child 이나 사용하는 건 2. Parent C 범위=> 그래서 사용 가능
Child
c = new Parent(); (X)
. 1. Parent c 생성 | 2. Child c를 사용시도 |
|
즉 범위는 Parent 이나 사용하는 건 2. Child C 범위=> 그래서 사용을 할 수가 없다
※ static 함수
내에서는 super, this 키워드 사용할 수 없다.
□
추상 클래스 (3:30 ~ 4:30)
○ 추상
메소드 : 함수의 body({}) 부분이 없는 미완성의 함수
ex) public abstract void go(String
m);
○ 추상
클래스 : 추상 메소드를 가지는 클래스
ex) public
abstract class
MyAbstract{
public abstract
void go(String m);
}
○
미완성의 클래스 이므로 생성불가
ex)
public abstract class
MyAbstract{}
MyAbstract m =
new MyAbstract(); (X)
○
다른 클래스에서 추상 클래스를 상속해서 미완성의 메소드를 구현(완성)해 줘야 함
ex)
public class Complete extends
MyAbstract{
public abstract void
go(String m) {}
}
□
Ex) Abstract class
□
interface (4:30 ~ 5:30)
○
클래스 안의 모든 메소드가 추상메소드인 미완성의
클래스
○
미완성의 클래스 이므로 생성불가
- interface MyInterface
{
public void
go();
}
MyInterface m = new
MyInterface(); (O)
※ 추상 클래스는 추상
메소드 + 일반 메소드, but 인터페이스는 Only 추상 메소드
※
인터페이스 안에서는 abstract 키워드 필요 없음
○
다중 상속을 지원하기 위해 나옴
○
다른 클래스에서 미완성의 메소드를 구현(완성)해 줘야 함 :
implements
public class Complete
implements
MyInterface {
//
............
public void go()
{} // 반드시 나와야 함
}
※ Tom(추상 클래스)
, Hilary(인터페이스), Bill(인터페이스), LittleTom(자식)
- LittleTom은
부모로 Tom, Hilary, Bill 모두 가능하다.
○ 인터페이스 안의 모든 필드는 static,
final
interface MyInterface{
static final int count = 30;
public void go();
}
count = 55; // (X)
System.out.println(MyInterface.count); // (O)
※ Tom(슈퍼클래스, int age =
10;), Hillary(인터페이스, int age= 5;), Tom(서브클래스, int age = 25;)
Tom 클래스에서 age 변수를
사용할 시
→ this.age,
super.age, interface.age
□
final
○
멤버필드 : 값 변경 불가
○
메소드 : 오버라이딩 불가
○
클래스 : 상속 불가
○
final int count = 10;
○
final void go() {}
○
final class FinalClass{}
[추가 연습예제]
*** 사각형을 나타내는 클래스(Rect.java)를 설계하시오.
1. member field:
가로/세로를 나타내는 width, height(int)
2. method:
사각형 둘레를 구하는 함수(getCircum())
사각형 면적을 구하는 함수(getArea())
3. 생성자
Rect(): 가로/세로 값을 0으로 지정
Rect(int width, int height) : 가로/세로 값을 받아와 멤버필드에 지정
*** RectUser 라는 클래스를 만들고 main() 안에서
1. Rect 객체를 2개 생성하고(생성자 각각 다른것 사용)
2. 면적과 둘레값을 출력하시오.
*** Food 라는 이름의 추상클래스를 정의한다.
1. Food는 cook(), taste() 라는 두개의 추상 메소드를 가진다.
2. Food를 상속받는 Noodle, Sandwich라는 두개의 클래스를 정의한다.
3. FoodUser라는 클래스의 main() 함수에서
1) Food type의 배열을 만들고
2) 그 배열안에 Noode객체와 Sandwich객체를 각각 하나씩 생성해 넣는다.
3) 배열안의 각각의 객체가 가지고 있는 cook(), taste()를 호출해 본다..
'Information Technology > Java' 카테고리의 다른 글
[java] 엄마도 이해하는 자바 기본 6일차 (1) (0) | 2013.02.19 |
---|---|
[java] 엄마도 이해하는 자바 기본 5일차 (2) | 2013.02.18 |
[java] 엄마도 이해하는 자바 기본 4일차 (0) | 2013.02.18 |
[java] 엄마도 이해하는 자바 기본 3일차 (0) | 2013.02.18 |
[java] 엄마도 이해하는 자바 기본 1일차 (2) | 2013.02.18 |
Comments