ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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

    댓글

Designed by Tistory.