
클래스와 객체
OOP
Object Oriented Programming
-Class 기반 oop ex) Java
-Prototype 기반 oop ex)javaScript
Class -> 설계도
Object --> 제품
Instance --> 메모리 상에 존재하는 실체
자바 객체 지향 프로그래밍의 특징
1. Encapsulation, Information Hiding
2. Inheritance
3. Polymorphysm
Point2D Point3D 예제로 해보기
스텍메모리에 저장되는 변수는 떄가 되면 자바가상머신이 자동으로 삭제하지만
힙영역에 저장되는 필드는 객체가 사라지지 않는 한 절대 삭제되지 않는다.
클래스 파일 안에 class 가 여러개 있으면 bin 폴더로 컴파일 될때 알아서 분리된다.
메서드
메서드란?
method : 특정 기능을 수행하기 위한 명령어의 집합.
method 선언할때 4가지 경우
1. parameter(x), return (void)
2. parameter(O), return (void)
3. parameter(O), return (O)
4. parameter(x), return (O)
private static int dice1() {
return (int)(Math.random()*6)+1;
}
public static void dice2() {
System.out.println((int)(Math.random()*6)+1);
}
dice 1이 쫌 더 좋은 코딩이다.
이유는 => dice1이 이식성이 더 좋다.
dice2는 자바 콘솔에서 밖에 못쓴다.
라이브러리화 해서 재사용성이 좋으려면 dice1처럼 코딩을 하는 것이 더 좋다.
오버라이딩/ 오버로딩
- 오버라이딩 : 부모클래스의 메서드와 같은 이름, 매개변수를 재정의 하는 것. (=>자식 객체에서 디테일을 주고 자식객체에 맞게 사용하기 위해서)
- 오버로딩 : 같은 이름의 함수를 여러 개 정의하고, 매개변수의 타입과 개수를 다르게 하여 매개변수에 따라 다르게 호출할 수 있게 하는 것.
callByValue / callByReference
callByValue : 값에 의한 호출이다.
callByReference : 참조에 의한 호출이다.
... 사용해 보기
private static void print(int... i) {//... 을 찍으면 넘어온 int 개수에 따라 i라는 배열이 생성됨System.out.println(Arrays.toString(i));
System.out.println(i);
}
//int[] i 로 넘기는 것이랑 무슨 차이일까?
//위와 같이 넘기면 고정된 배열로 매개변수로 줘야 하지만
//...으로 넘기면 매개변수를 int형으로 해서 가변형으로 넘겨 줄수 있다.
//하지만 이럴때는 배열로 생성되기 때문에 print 할때 Arrays.toString 메서드로 넘겨줘야 한다.
main
main의 의미
=> 프로그램이 시작할떄 entry Point 로 인식해서 거기서 부터 시작하겠다는 의미이다.
main 메서드에도 매개변수를 넘길 수 있다.
=> os에서는 무조건 문자열로 자바로 넘겨준다.
=> int나 다른 형태로는 못넘겨 주게 되어있다.
package method;
public class MethodTest3 {
public static void main(String[] args) {
for (int i = 0; i < args.length; i++) {
System.out.println("args["+i+"]:"+ args[i]);
}//for
}//main
}//class
오늘의 생각
^= 뭔지 알아보기
'Java' 카테고리의 다른 글
[Java]이너클래스, 예외처리(1)_10/04 (0) | 2022.10.04 |
---|---|
[Java]상속/casting/다형성 (1) | 2022.09.29 |
[Java]생성자/프로젝트 import/Amateras (0) | 2022.09.28 |
[Java]String 클래스 / 문자열 형변환 (1) | 2022.09.27 |
[Java]제어문/달력/메모리 구조 (0) | 2022.09.26 |