클래스 변수와 메서드 변수
package javajungsuck;
public class ret {
public static void main(String[] args) {
//인스턴스 메소드와 변수 사용
//클래스 임포트 및 사용
Math math = new Math();
int a = math.a;
int result = math.method1(3, 4);
System.out.println(result);
System.out.println(a);
//클래스 메소드 및 변수는 임포트 안해도 사용 가능
int b = Sub.a;
int resutl1 = Sub.sub(9, 5);
System.out.println(resutl1);
System.out.println(b);
//sysout은 void 타입 출력이 안된다.
Gugudan.gugudan(2);//구구단 메서드 실행
}
}
class Math {
//인스턴스 변수
int a = 0;
//인스턴스 메소드
int method1(int x, int y){
int ret1 = x + y;
return ret1;
}
}
//public static 클래스는 하나의 자바파일에 하나만 가능
class Sub {
//클래스 변수
static int a = 1;
//클래스 메소드
static int sub(int x,int y) {
int result1 = x - y;
return result1;
}
}
class TrueOr{
//참일때 실행되는 메서드 작성
static int horou(int a,int b) {
if (a>b) {
return a;
}else {
return b;
}//이상태로만 가면 오류가 난다. 조건이 참일때 실행이 되지만 조건이 거짓일때는 반환값이
//지정 안되 있기때문이다. 빠뜨리지 말고 지정해줘야됨
}
}
class Gugudan{
//구구단 메서드
static void gugudan (int a) {
for(int i = a; i<=a;i++) {
if(i==0) {
System.out.println("오류입니다.!");
}
for(int j = 1; j<10;j++) {
System.out.println(i+"*"+j+"는"+i*j+"입니다.");
}
}
}
}
공통속성을 클래스변수로 설정 (static)
개별속성을 인스턴스 변수로 설정한다
패키지 내에서 클래스 변수는 객체 생성없이 사용가능하고
패키지 내에서 인스턴스 변수는 객체를 생성하고 난뒤 사용이 가능하다.
매서드 내에 선언된 변수는 지역변수
매개변수가 있는 메서드와 없는메서드
매개변수 있는 메서드
int a = add(3,4);
이런식으로 대입을 해준다
void 메서드 매개변수가 없는
add1();이런식으로 사용가능
method에 return 항목이 필요하다
반환타입이 void일때 생략할 수 있지만 컴파일러가 자동을 추가
void가 아니라면 생략 불가능
기본형 매개변수: 변수의 값을 읽기만 할수있다,
참조형 매개변수 변수의 값을 읽고 변경도 가능하다.
package javajungsuck;
//클래스 Apdol 생성
class Apdol {
int a ;
}
public class C3 {
public static void main(String[] args) {
//객체 생성
Apdol gim = new Apdol();
//참조변수를 통해 a에 접근
System.out.println(gim.a); //0
//참조형 매개변수를 통한 접근 gim을 참조형 매개변수 처리
aplace(gim);
System.out.println(gim.a);//100
}
//참조형매개변수
//사용법 (클래스명 참조변수명) 위객체는 (Apdol gim)
//이후 객체의 항목을 활용해서 바꾸어 주면된다.
static void aplace (Apdol gim) {
gim.a = 100;
}
}
참조변수 반환타입
package javajungsuck;
public class C4참조변수반환타입 {
public static void main(String[] args) {
//객체생성
Ai ai = new Ai();
//참조변수를 통해 객체 접근 및 a 변수 값 10으로 변경
ai.a = 10;
System.out.println(ai.a); //10
//새로운 Ai 객체 ai1을 생성하고 클래스메서드 reon(ai)를 참조변수로 넘긴다.
Ai ai1 = reon(ai);
System.out.println(ai1.a);//10
}
//클래스 메서드 reon 생성
static Ai reon(Ai ai) {
//객체생성 클래스 Ai의 인스턴스 변수 a에 접근을 위해서
Ai gim = new Ai();
//참조변수 gim의 a항목에 ai.a 값을 넣고
gim.a = ai.a;
//참조변수 반환을 한다!
return gim;
}
}
//Ai 클래스
class Ai{int a = 0;}
클래스메서드와 인스턴스 메서드
package javajungsuck;
//인스턴스 메소드
class Meth {
//인스턴스 변수 사용 o
long a = 2, b = 3 ;
//인스턴스 메서드는 인스턴스 변수를 사용하기 때문에 매개변수가 필요없다.
//객체의 기능을 사용할때는 객체 생성이 필요하다.
long metha () {
long add = a + b;
return add;
}
}
class Meth2{
//static 변수는 매개변수를 받아서 처리한다!
//그래서 객체를 생성해 사용할 필요가없다, 즉 매개변수 사용 x
//long a,long b 지역변수
static long methb (long a,long b) {
long add = a + b;
return add;
}
//static 쓰는 경우 공통속성일경우
//iv 쓰는 경우 개별속성인경우
}
public class C5클래스메스드_인스턴스메소드 {
public static void main(String[] args) {
//인스턴스 변수 1.객체생성
Meth meth1 = new Meth();
//매개변수 없이 참조변수명.인스턴스메서드 사용
long a = meth1.metha();
System.out.println(a);
//클래스메소드의 사용 클래스명.클래스메소드(매개변수,매개변수)
long b = Meth2.methb(3, 1);
System.out.println(b);
}
}
객체생성 없이 사용가능
객체 생성하고 사용가능 및 인스턴스 변수(iv)사용가능
static 메소드를 만들었는데 붙일지말지 결정하는 경우를 아는사람이
프로그램을 만들줄 아는사람 iv를 사용하지 않을때 static 붙임
static 메소드에서 인스턴스 변수와 인스턴스 메소드는 사용할수없다.
사용하기 위해선 객체생성 작업이 필요하기 때문이다.
'개발공부 2023 ~03~13' 카테고리의 다른 글
is-a,has-a(상속,포함관계) ,단일상속, super,super() (0) | 2023.03.27 |
---|---|
(중복메소드(오버로딩) , 기본생성자 및 this, this()) (0) | 2023.03.26 |
객체지향 (클래스와 객체) (0) | 2023.03.23 |
7일차 복습 ( 은행 객체 생성,코딩 시 신경 써야 할 점 ) (0) | 2023.03.21 |
7일차 복습 (메소드의 종류, 계산기 객체 만들어보기) (0) | 2023.03.21 |