Class 클래스
내부 클래스(main함수안)- 안드로이드에서는 안씀 , 활용도면에서 높지않음
보통, package 밑에 만듬
c언어 : 구조체(struct) , 공영체(union) ->변수로 구성되어있다.
JAVA : class ->변수와 함수로 구성되어있다.
자바클래스의 구성
멤버변수(field)+멤버함수(method)로 구성되어있다.
오버로딩 : 함수명 중복가능
오버라이딩 :
클래스 설계순서
field변수->constructor생성자->함수
클래스명 설정 : 의미를 부여, 첫글자는 반드시 대문자, 첫글자 소문자 숫자 안됨, 한글 및 공백 안됨
접근허용범위 Access Modifier
-> 접근지정, 접근제어, 접근수정
↓주체에 따라 선택
-> private : 비공개, 변수
-> package : 기본값 , 생략가능 (이클립스루나이전버전엔 default라 부름) ,같은 폴더 내에서만 접근가능
-> protected : package와 public의 중간단계 , 다른 팩키지라도 상속관계에는 접근가능.
-> public : 공개, 함수
<RAM>
JAVA의 RAM안에 있는 메모리공간은 static heap stack이 있다
static |
heap |
stack |
new연산자로 메모리가 할당한다는 의미는 해당 메모리 공간에서 필요한만큼 할당시키는 것이다. 이 공간의 이름이 객체
new라는 새로운 address가 생겼다고도 말할 수 있음.
다른 공간에 위의 address를 컨트롤할 수 있는 참조변수를 만들어 조종할 수 있음.
public static void main(String[] args) {
// class 클래스
int a=3; // 정수형 a변수가 메모리 4byte할당
//클래스는 메모리를 할당을 한 후 사용한다
//new 연산자 : 메모리할당 연산자
//new Sungjuk(); //메모리가 할당됨, 객체(Object)
//kim -> #50번지를 참조하는 변수
Sungjuk kim = new Sungjuk(); //객체이름 kim , 자료형 ; sungjuk
//lee -> #70번지를 참조하는 변수
Sungjuk lee = new Sungjuk();
//객체의 주소값, 램공간안에 할당되어있는 공간의 위치를 알수있다.
System.out.println(kim.hashCode());
System.out.println(lee.hashCode());
int b=5;
int c=b; //b가 가지고 있는 값을 c준다
Sungjuk park = lee; //70번지를 50번지에 준다, 자료형은 sungjuk이므로 적어줘야함
System.out.println(park.hashCode());
출력결과
366712642 //#50번지
1829164700 //#70번지
1829164700 //23줄에 있는 lee가 park에게 준 번지
super 부모님
super의 엄마가 object
객체지향의 특징 : 특정 자료형을 은폐할 수 있다.
생성자 Constructor
생성자 함수(constructor)
- new연산자와 함께 메모리를 할당하는 경우 호출
- 클래스명과 동일한 함수
- 기본 생성사 함수(default constructor) : 매개변수가 없다
- 기본 생성자 함수는 자동 추가된다.
- 단, 기본 생성자 함수는 생성자 함수가 오버로딩이 되면 자동추가되지 않으므로
강제적으로 선언할 것을 강추!
- 생성자함수도 오버로딩(overloading)이 가능하다 = 생성자함수가 여러개 올 수 있다.
- (주의!!)리턴형이 존재하지 않는다. 객체생성 불가능.
소멸자 함수(destructor) : JAVA에는 없음
가비지 콜렉팅 (Garbage Collecting)
- 자바가상머신(JVM)은 가비지 콜렉터리는 인스턴스 자동해제(메모리반환) 시스템을 가동시켜 필요한 메모리를
관리한다.
This
의미 : 자신의 클래스 멤버를 가리킴. 일반변수와 멤버변수를 구분하기 위함
This( )
의미 : 생성자 함수간의 호출
class Jumsu { //package 생략. oop0529내에서만 접근
private String name="손흥민";
private int kor,eng,mat;
private int aver;
public Jumsu(){} //default constructor 기본생성자함수
public void disp() {
String name="박지성"; //public 지역변수의 출력순위가 높음
System.out.println(name); //일반 지역변수
System.out.println(this.name); //this .연산자 멤버변수를 가리킴
}//disp() end
}//class end
출력결과
박지성
손흥민
name ; 지역변수 아무런 지칭없을 때는 public
this.name ; 멤버변수
이클립스 프로그램
기본생성자 자동 추가 :Source -> Generate constructor from superclass
1. 생성자함수에 있는 매개변수 선택하기
2. super() 함수 불러내기
기본클래스
1) Math 클래스
2) Integer 클래스 - 정수값
Integer a = new Integer(5);
Integer b = new Integer("7");
System.out.println(a.toString()); //string으로 형변환되어 "5"
System.out.println(b.intValue()); //int로 형변환되어 7
출력결과
5 //string형
7 //int형
integer클래스의 parseInt 매우 많이 나옴
- string형을 정수형으로
//integer- "4" -> 4 로 변환하기
System.out.println(Integer.parseInt("4"));
System.out.println("2"+"6"); //"26"
System.out.println(Integer.parseInt("2")+Integer.parseInt("6"));
출력결과
4
26 //"26"
8
parseInt 에러발생
//NumberFormatException발생
//System.out.println(Integer.parseInt("soldesk"));
//NumberFormatException발생
//공백도 안됨 ㅋ 까다로워!
//System.out.println(Integer.parseInt(" 7 "));
1. 문자열 안됨
2. 공백도 안됨 ㅋㅋㅋ ㅠ
3) String 클래스
'공부 > 자바 OOP' 카테고리의 다른 글
5월31일 - Wrapper 클래스 (0) | 2019.05.31 |
---|---|
5월30일 - this() / static / final (0) | 2019.05.30 |
5월28일 - 메소드 + 정렬 (0) | 2019.05.28 |
5월23일 - Method 메소드 ★매우 중요★ (0) | 2019.05.23 |
5월 22일 - 배열 2+연습문제 (0) | 2019.05.22 |