★클래스 - 여러 메소드를 묶음화 할때 사용
클래스가 다르다면 메소드의 이름이 중복되도 문제가 발생하지 않는다.
클래스를 사용하는 목적은 기능이 유사하거나 의미가 유사한 메소드들을 클래스로
묶음화를 해 둠으로써 메소드의 관리의 효율성이 증대될수 있다.
ex) 로그인을 처리하는데 필요한 메소드들을 하나의 클래스로 묶고
로그아웃을 처리하는데 필요한 메소드들을 하나의 클래스로 묶고
회원가입을 처리하는데 필요한 메소드들을 하나의 클래스로 묶고
클래스를 사용함으로써 메소드의 이름이 중복되는 문제를 해결할수 있다.
ex) A,B라는 회사에서 공동 프로젝트를 진행해서 두회사가 하나의 프로그램을 만들때 나중에 A회사가 만든
소스코드랑 B회사가 만든 소스코드를 하나로 합치는데 그때 메소드의 이름이
중복되더라도 클래스로 묶음화를 해놨기 때문에 이름중복이 문제가 되지 않게 됨.
결과
korea의 A메소드 입니다.
korea의 B메소드 입니다.
korea2의 A메소드 입니다.
korea2의 B메소드 입니다.
전역변수인 num2=20으로하고 메소드안에 num2=40으로 해도 에러가 안뜬다.
★변수는 지역변수와 전역변수가 존재
지역 변수 - 만든 메소드 안에서만 접근이 가능
전역 변수 - 만든 클래스에 있는 어떤 메소드에서도 접근이 가능
결과는 이름: 지연 나이: 34 이렇게 나온다 A.setter_name과 A.setter_age를 주석처리하면 결과는
이름: 동동 나이: 12 가 나온다.
setter - 변수의 값을 초기화해주는 메소드
즉 변수의 값을 지정해주는 역할을 하는 메소드
getter - 변수의 값을 리턴해주는 메소드
즉 변수의 값을 알려주는 역할을 하는 메소드
결과는 이름:동동 나이:28이나온다 23+5를 해서 28이다.
B pr1 = new B(); B pr2 = new B(); 가 주석처리 되면 밑에 코드들이 다 에러표시가 난다.
현재 클래스는 한 사람의 이름과 나이 정보를 저장하고 있을 수 있음.
여러 사람의 이름과 나이를 저장할 수가 없음.
그래서 인스턴스가 필요하게됨.
인스턴스(instance)- 같은 클래스에 속하는 개개의 객체 ,적재시킨 메모리 공간
클래스를 new키워드를 통해 메모리에 적재시킬수 있음
ex) new A();
그 인스턴스에 접근할수 있게 이름을 달아놔야함.
ex) A pr1 = new A();
지정한 이름으로 해당 인스턴스에 접근할수 있게됨.
클래스를 정의할때 변수나 메소드에 static키워드를 안붙여서 정의하면 그 클래스에 있는
메소드나 변수를 쓸때 인스턴스화 를 해서 사용해야함
인스턴스화를 해서 쓰기위해 static 키워드를 안붙여서 정의.
인스턴스화- 인스터스를 만든것
클래스에 있는 변수와 메소드를 통칭해서 멤버라고함.
클래스에 멤버 변수의 값을 메소드로 초기화를 안 하고 직접 변수 값을 초기화 해도됨.
근데 setter 메소드를 만들어서 변수의 값을 초기화하는 이유는 실수로 변수의 값을 잘 못 초기화할수 있기 때문에
실수를 방지하기 위해서 setter 메소드를 사용하는 것.
변수의 값을 직접 초기화하지 못하게 막을수 있음.
setter로 변수의 값을 초기화 할수 있는 메소드를 구현하고 변수의 값을 직접 초기화할수 없게 막아두는게 일반적.
static 키워드를 붙여서 선언한 변수는 클래스 변수(static변수)
static 키워드를 안붙여서 선언한 변수는 인스턴스 변수
클래스 변수는 모든 인스턴스가 공유해서 같이쓴는 변수다. 어느 인스턴스에서 값을 바꾸건 모든
인스턴스가 다똑같이 값이 변경.
인스턴스 변수는 인스턴스 마다 서로 다르게 쓰는 변수.
A라는 인스턴스에서 값을 바꿔도 다른 인스턴스에는 전혀 아무 영향이 생기지 않음.
그래서 인스턴스 마다 다르게 값이 유지되야 하면 인스턴스 변수를 쓰게 되고 모든
인스턴스가 값을 똑같이 사용해야 하면 클래스 변수를 쓰게됨.
이런 결과 출력을 나오게 할려면 pirn() 메소드를 만들어 출력할수 있게 만들어준다.
moblie이 int자료형이 안되는 이유는 010- <- 짝대기는 문자열 취급한다.
korea.a="동동";//error
클래스 변수는 인스턴스화를 하지 않아도 사용할수 있음.
인스턴스 변수는 인스턴스화를 하지 않으면 못씀.
클래스 변수 인스턴스화를 해도 안해도 사용할수 있음.
클래스 메소드는 인스턴스화를 하지 않아도 사용할수 있음.
클래스 메소드는 인스턴스화를 해도 않해도 사용할수 있음.
클래스 메소드이며 결과는 합: 30 이렇게 나오게 된다.
메소드를 정의할때 static키워드를 붙이면 클래스 메소드로 정의되고, static키워드를 안붙이면
인스턴스 메소드로 정의.
인스턴스 메소드는 인스턴스화를 안하면 사용할수 없다.
메소드로 구현 하면됨.하지만 인스턴스가 여러개 만들어져야 한다면 클래스를 설계할때 static 키워드를 안 붙여서 인스턴스 변수와 인스턴스 를 여러개 만들지 않을거면 클래스를 설계할때 static키워드를 붙여서 클래스 변수와 클래스 메소드로 구현하면됨
static이 없는 인스턴스 메소드다. 인스턴스화 로해줘야 된다.
//calc.sum(); error
인스턴스화를 해야 쓸수 있는 변수인 인스턴스 변수에 인스턴스화를 안해도 쓸수 있는
메소드인 클래스 메소드가 접근할수 없음.
D.class_instance_instance(); //error
인스턴스 메소드는 인스턴스화를 안하면 사용할수 없음
함수 내부에 선언하면 지역변수
함수 외부에 선언하면 전역변수
변수의 유효범위 - 만든 변수를 어디서 가져다가 쓸 수 있는지 뜻한다.
전역변수는 모든 메소드에서 즉 어디서든지 접근 가능
지역변수는 선언한 그메소드에서만 접근 가능
파일의이름과 동일한 클래스를 기본 클래스라고 함. 기본클래스는 반드시 정의. 없으면 에러.
System.out.println(a);//error
for의 소괄호에다가 선언한 변수는 for문이 종료됨과 동시에 변수가 소멸
해서 그변수를 for문이 종료된 후에는 사용할수 없게 됨.그렇게 변수가 for문이 종료됨과 동시에 소멸하기
때문에 소괄호에 선언한 변수는 그 for문 안에서만 사용할수 있음.
블럭문: 중괄호를 사용하는 코드를 블럭문이라함
for,for_each,while,if,else.....
블럭문의 바디에서 정의 한 변수는 그 바디에서만 사용할수 있음.
블럭문 바디에서 정의된 변수는 해당 바디의 코드가 전부 실행되고 나면 변수가 소멸.
다섯개의 배열을 만든다. arr[i]는 5섯개 입력이 만들어진다.
'프로그래밍 > JAVA' 카테고리의 다른 글
JAVA/ 생성자,오버로딩,오버라이드 (0) | 2017.07.11 |
---|---|
JAVA/ random,Array (0) | 2017.07.08 |
JAVA/ 메소드,return,함수 (0) | 2017.07.02 |
JAVA/ 반복문(while,for) (0) | 2017.06.28 |
JAVA/ (비교,논리)연산자, 조건문 case (0) | 2017.06.24 |