-
[JAVA] Class언어/JAVA 2022. 9. 7. 17:39
-프로그램으로 처리하고자 하는 대상을 자료화하여 하나의 자료형으로 정의한 사용자 정의 자료형
-쉽게 말해 필요에 의해 기본 자료형(int, double, char 등)외에 새롭게 정의한 자료형
-한 개 이상의 자료, 하나 이상의 자료형을 저장할 수 있는 복합 자료형
-자바의 프로그램 단위는 클래스임
-하나의 프로그램 파일(XXX.java) 안에는 여러 개의 클래스를 넣어서 사용할 수 있음
-여러개의 클래스 중 파일이름과 같은 이름을 쓰는 클래스를 public으로 지정함
-그 클래스에는 보통 public static void main(){}이 존재. 이 클래스는 자료형으로서의 클래스이기 보단 프로그램 실행단위로서의 클래스임
-만들어서 사용하거나, import해서 사용할 클래스는 자료저장&가공용 클래스임
// 만드는 법: class라는 키워드를 이용하여 만듦 class 클래스이름{ // member field, property, member variable, field int 변수1; // 한글로 변수를 만들 수 있지만 오류시 원인을 찾기 힘듦 double 변수2; String 변수3; int[]배열=new int[5]; // member method public void 메서드1() {} public static void 메서드2(){} }
//클래스 first 생성 class First{ int n1; int n2; // 속성(멤버필드, 멤버변 수, 필드): 클래스에 속한 정보(변수)들 // 속성은 변수로 생성하여 클래스의 멤버필드라고도 호칭 } public class Class01 { public static void main(String[] args) { // 클래스변수의 선언 First a1; // 새로 만들어진 클래스의 변수는 위와 같이 생성함 // 생성된 변수는 래퍼런스(참조)변수임 // 배열 때와 마찬가지로, new 명령을 이용하여 HEAP 영역에 // 적정 공간(클래스가 정의된 크기만큼)을 확보한 후 // 그 주소를 a1변수에 저장하여 사용함 // 래퍼런스 변수와 new에 의해 만들어진 공간이 합쳐지면 이를 객체라고 부름 a1=new First(); // 위와 같이 공간이 할당되면 이제부터 n1, n2 변수가 a1이라는 이름과 함께 사용이 가능함 // new First()로 생성된 새로운 공간을 뉴인스턴스라고 부를 예정 First a2=new First(); // 객체가 두개가 만들어지면 a1에도 n1, n2가 생성되고 // a2에도 n1, n2가 생성되므로 // 그들을 구분하기 위해 // a1.n1 / a1.n2 / a2.n1 / a2.n2 로 사용함 System.out.println(a1.n1); System.out.println(a1.n2); a2.n1=30; a2.n2=40; System.out.println(a2.n1); System.out.println(a2.n2); } }
멤버 메서드(member method)
: class에 소속되어 class 객체에 종속된 method
-멤버 메서드는 특별한 경우를 제외하곤 static을 사용하지 않음
-정적(static): 처음부터 만들어지는 이라는 뜻. 정적멤버를 선언할 때 사용함
class Animal{ String name; int age; public void output() { System.out.printf("name is %s, age is %d \n", name, age); } public void input() { name="molly"; age=14; // output(); // 클래스 내부에 함께 있는 멤버 메서드들간은 서로 호출이 자유로움 } // 멤버메서드는 클래스형으로 생성된 객체 "전용" 메서드임 // 메서드의 실행이 객체전용으로만 사용된다는 뜻 // 멤버메서드의 내용을 객체와 상관없는 명령이 들어갈 수도 있지만 // 보통은 멤버변수들의 조작, 출력, 입력을 위한 명령들로 주로 구성됨 public void inputWithParam(String n, int a) { name=n; age=a; } public String getName() { return name; } public int getAge() { return age; } // 현재 프로그램(패키지 내의 같은 파일)에서만 사용한다는 가정하에 public도 생략 가능 } public class Class02 { public static void main(String[] args) { Animal a1=new Animal(); // 객체 생성 a1.name="dog"; // save member variable a1.age=20; // save member variable a1.output(); // 멤버변수처럼 앞에 소속된 객체이름이 오지 않으면 사용할 수 없음 // output(); ->error Animal a2=new Animal(); a2.input(); a2.output(); Animal a3=new Animal(); a3.inputWithParam("bella",10); a3.output(); System.out.println("name: "+a3.name+", age: "+a3.age); String name=a3.getName(); int age=a3.getAge(); System.out.println("name: "+name+", age: "+age); // 어떤 멤버 메서드를 만들고 사용해야 하는가에 대한 정답은 없음 // 개발자 판단 및 프로그램의 필요성에 의해 설계하고 제작되는 메서드를 // 잘 만들고 잘 사용하면 됨 } }
-멤버메서드의 주된 목적은 멤버변수의 값을 저장하거나 얻어오거나 그 둘의 목적이 비교적 크기 때문에 특정멤버메서드(저장하고 얻어오는 메서드)를 별도의 사유가 없어도 멤버변수에 따라 필요한 만큼 만들고 시작하는 경우 많음
-메서드의 이름 setter와 getter라는 이름을 사용하는 두 개의 메서드임
class GetSetTest { private int intVar; private double doubleVar; private String stringVar; //멤버 변수가 하나 만들어지면 그변수에 전달값을 저장할 수 있는 메서드와 // 값을 얻어낼 수 있는 메서드를 생성함 // getter와 setter의 자동 생성 // 현위치에서 마우스 오른쪽 버튼 클릭 // source 메뉴 // generate getters and setters 클릭 // selectAll 클릭 // generate 클릭 public int getIntVar() { return intVar; } public void setIntVar(int intVar) { this.intVar = intVar; // 멤버변수와 매개변수의 이름이 같은 경우 멤버변수에 this. 을 붙여서 구분함 } public double getDoubleVar() { return doubleVar; } public void setDoubleVar(double doubleVar) { this.doubleVar = doubleVar; } public String getStringVar() { return stringVar; } public void setStringVar(String stringVar) { this.stringVar = stringVar; } } public class Class03{ public static void main(String[]args) { GetSetTest gs=new GetSetTest(); gs.setIntVar(123); System.out.println("멤버변수 intVar: "+gs.getIntVar()); } }
'언어 > JAVA' 카테고리의 다른 글
[JAVA] 생성(Constructor) (0) 2022.09.07 [JAVA] 접근지정자(AccessModifier) (0) 2022.09.07 [JAVA] Overloading (0) 2022.09.07 [JAVA] for문 (0) 2022.09.07 [JAVA] Method (0) 2022.09.07