IT 공부/Java

Class2

toraa 2022. 6. 29. 16:15

클래스
 . 자바프로그래밍의 단위 - 설계도의 클래스 / 실행 클래스도 있다.
 . 객체지향프로그램의 특징 - 캡슐화, 다형성, 상속의 특징을 갖는다.
 . java파일에 여러개의 클래스가 존재할때는 public은 하나여야 한다. 하지만 컴파일하면 .class는 개별적으로 생성된다.


 . 구성요소
   - 필드 : 속성을 구현, 전역변수와 같이 메소드간 공유
   - 생성자 : 클래스 이름과 같다. 초기화 역할, void/return이 없다. 기본 생성자는 생략되어도 JVM이 넣어준다.
                   오버로딩 - 같은 이름의 생성자나 메소드가 존재할때 매개변수의 타입, 수, 순위를 보고 알아서 호출된다.
   - 메소드 : 기능을 구현


 . 변수의 종류
    - 멤버변수 : 필드의 일반변수. static 안붙음
    - 클래스변수 : static이 붙은 변수
                           클래스가 실행되면 가장 먼저 메모리에 올라온다.(객체가 생성되기 전에 올라옴)
                           객체간에 공유된다.
                           변수, 메소드에 사용된다.
 - 매개변수  : 생성자나 메소드안에 있는 변수(매개변수, 매개변수) 
 - 인스턴스 변수: Student s = new Student()
 * 전역변수/지역변수 - 전역변수의 역할 필드(멤버변수)가 하고, 지역변수는 메소드안에서 선언한 것을 말한다.
 * for문, if문은 메소드안에서 기능을 구현할때 사용되어야 한다.

객체배열
; 배열안에 객체를 넣어 활용하는 것.
- 구성 : 배열, 객체들도 필요하다.

1) 배열을 생성한다.  - 무엇을 담을 것인가?                     클래스 [] arr = new 클래스[10];
2) 객체를 만든다.    - Student(클래스) 객체변수1 = new Student(); --> name, tel, 공부하기()
                                - Student(클래스) 객체변수2 = new Student();
                             arr ----------> [객체변수1][객체변수2][ ][ ][ ][ ][ ][ ][ ][ ]
                                                          |
                                                arr[0].name
                                                arr[0].tel
                                                arr[0].공부하기()


class Student{
	String name;
	String tel;
	int age;
	
	Student(String name, String tel, int age){
		this.name = name;
		this.tel = tel;
		this.age = age;
	}
	
	String getName() {
		return name;
	}
	String getTel() {
		return tel;
	}
	int getAge() {
		return age;
	}
}

public class Class14 {
	public static void main(String[] args) {
		
		Student[] arr = new Student[3];	// [] [] []
		
		arr[0] = new Student("서대길","010",23);
		arr[1] = new Student("김건부","020",22); 
		arr[2] = new Student("장하권","030",24);		
	/*
	 * Student st1 = new Student("서대길","010",23); Student st2 = new
	 * Student("김건부","020",22); Student st3 = new Student("장하권","030",24);
	 * 
	 * arr[0] =st1; arr[1]=st2; arr[3]=st3; }
	 */
		for(int i=0; i<arr.length; i++) {
			String name = arr[i].name;
			String tel = arr[i].tel;
			int age = arr[i].age;
			System.out.println(name+"선수의 전화번호는 "+tel+"이고, 나이는 "+age+"입니다.");
		}
}
}
package classstudy;

import java.util.Scanner;

class Products {
	String name;
	int price;
	int stock;
	int sold;
	Products(String name,  int price, int stock, int sold){
		this.name = name;
		this.price = price;
		this.stock = stock;
		this.sold = sold;
	}
	
	//가격 가져오기
	//재고량 가져오기
	//판매량 가져오기	
	String getName() {
		return name;
	}
	int getPrice() {
		return price;
	}
	int getStock() {
		return stock;
	}
	int getSold() {
		return sold;
	}

}
	//스캐너로 받아서 객체를 생성한다.
	//Products를 담는 배열 3개를 준비한다.
	//배열에 Products객체를 담는다.
	//반복문을 활용해서 모두 출력해본다.
public class Class15 {
		
	public static void main(String[] args) {
		Products[] p = new Products[3];

		System.out.println("제품명,가격,재고량,판매량을 차례로 기입해주세요");
		Scanner sc = new Scanner(System.in);
		//객체저장
		
		for(int i=0; i<p.length; i++){
			
			String name = sc.next();
			int price = sc.nextInt();
			int stock = sc.nextInt();
			int sold = sc.nextInt();
			
			p[i]=new Products(name, price, stock, sold);
			System.out.println((i+1)+"번째 제품을 등록했습니다");

		sc.close();

	}
}

Class16_Manager

package classstudy;

public class Class16_Manager {
	String name;
	int age;
	String part;
	
	void setName(String name) {
		this.name=name;
	}
	
	int getAge(int age) {
		return age;
	}
	void setAge(int age) {
		this.age=age;
	}
	
	String part() {
		return part;
	}
	
	void setPart(String part) {
		this.part=part;
	}
	
	void printMg() {
		System.out.println("이름: "+name);
		System.out.println("나이: "+age);
		System.out.println("부서: "+part);
	}
}

Class16_Student

package classstudy;

public class Class16_Student {
	String name;
	int age;
	String ban;
	
	String getName() {
		return name;
	}
	void setName(String name) {
		this.name = name;
	}
	int getAge() {
		return age;
	}
	void setAge(int age) {
		this.age = age;
	}
	String getBan() {
		return ban;
	}
	void setBan(String ban) {
		this.ban = ban;
	}
	
	void printSt() {
		System.out.println("이름: "+name);
		System.out.println("나이: "+age);
		System.out.println("반: "+ban);
		System.out.println("================");
	}
}

Class16_Teacher

package classstudy;

public class Class16_Teacher {

	String name;
	int age;
	String subject;
	
	//앞에서 Student와 동일하게 get~, set~ 메서드를 작성하고, printT()로 내역출력 구현
	String getName() {
		return name;
	}
	void setName(String name) {
		this.name = name;
	}
	int getAge() {
		return age;
	}
	void setAge(int age) {
		this.age=age;
	}
	String getSubject() {
		return subject;
	}
	void setSubject(String subject) {
		this.subject = subject;
	}
	void printT() {
		System.out.println("이름: "+name);
		System.out.println("나이: "+age);
		System.out.println("담당과목: "+subject);
		System.out.println("=====================");
	}
}

Class16_Ex

package classstudy;

public class Class16Ex {
	public static void main(String[] args) {
		
	Class16_Student st1 = new Class16_Student();
	//메소드를 활용해서 초기화
	st1.setName("수지");
	st1.setAge(21);
	st1.setBan("클래스");
	//메소드를 활용해서 읽어오기
	System.out.println("학생이름: "+st1.getName());
	
	//선생님
	Class16_Teacher th1 = new Class16_Teacher();
	th1.setName("서대길");
	th1.setAge(35);
	th1.setSubject("JAVA");
	
	//관리자
	Class16_Manager mg1 = new Class16_Manager();
	mg1.setName("김건부");
	mg1.setAge(22);
	mg1.setPart("연습실 청소");
	
	st1.printSt();
	th1.printT();
	mg1.printMg();
}
}

Account

package classstudy;

public class Account {
	
	String accountNo, ownerName;
	int balance;
	
	public Account(String accountNo,String ownerName, int balance) {
		this.accountNo = accountNo;
		this.ownerName = ownerName;
		this.balance = balance;
		
	}
	
	//예금
	void deposit(int amt) {
		balance += amt;
	}
	
	//출금
	void withdraw(int amt) {
		balance -= amt;
	}
	void widthdraw() {
		balance -= 1000;
	}
	//조회
	int balance() {
		return balance;
	}
}

계좌 

package classstudy;

public class Class17 {
	public static void main(String[] args) {
		//계좌를 생성하고 입출금 및 잔액조회 연습해보기
		
		Account ac1 = new Account("0225", "서대길", 2000);
		ac1.deposit(5000);
		System.out.println("대길이의 현재 잔액: "+ac1.balance());
		ac1.withdraw(3000);
		System.out.println("대길이의 현재 잔액: "+ac1.balance());
		
		System.out.println("******************");
		//3명의 계좌를 추가 개설해서 입출해보세요
		
		Account ac2 = new Account("0330", "김건부", 3000);
		ac2.deposit(5000);
		System.out.println("건부의 현재 잔액: "+ac2.balance());
		ac2.withdraw(3000);
		System.out.println("건부의 현재 잔액: "+ac2.balance());
		
		System.out.println("******************");

		Account ac3= new Account("0901", "전정국", 10000);
		ac3.deposit(2000);
		System.out.println("정국의 현재 잔액: "+ac3.balance());
		ac3.withdraw(2000);
		System.out.println("정국의 현재 잔액: "+ac3.balance());
	}

}

접근지정자
; 변수/메소드의 접근을 제한하는 것
. 종류
  - private : 선언한 클래스 안에서만 사용할 수 있다.
  - default : 같은 패키지안에서는 사용가능하다.
  - protected : 상속관계에 있는 다른 패키지에 있는 클래스는 변수/메소드에 접근 가능하다.
  - public : 다른 패키지까지 모두 사용가능하다.


package classstudy;

import bak.A;

class B extends A{
	
	void m() {
		System.out.println(super.name);
	}	
}
public class Class18 {
	public static void main(String[] args) {
		
		A a = new A();
		String value = a.name;  //위에서 name을 private로 선언하면 오류로 뜸
		a.getName();
	}
}

package classstudy;

import java.util.Scanner;

/*
	사칙연산을 하는 계산기 클래스를 작성하시오
	
	int result;
	더하기 add()
	빼기 sub()
	곱하기 mul()
	나누기 div()

*/
class Clculator {

	   int x, y, sum;

	   public Clculator(int x, int y) {
	      this.x = x;
	      this.y = y;
	   }

	   int add() {
	      sum = x + y;
	      return sum;
	   }

	   int sub() {
	      sum = x - y;
	      return sum;
	   }

	   int mul() {
	      sum = x * y;
	      return sum;
	   }

	   int div() {
	      sum = x / y;
	      return sum;
	   }

	}

	public class CalculatorEx {

	   public static void main(String[] args) {
	      // TODO Auto-generated method stub
	      Scanner sc = new Scanner(System.in);
	      System.out.println("두 수를 입력하세용");
	      int a = sc.nextInt();
	      int b = sc.nextInt();
	      System.out.printf("입력한 수는[%d] || [%d] 입니다.", a, b);
	      System.out.println(" ");
	      Clculator cl1 = new Clculator(a, b);

	      while (true) {
	         System.out.println("==================================");
	         System.out.println("1.덧셈 2.뺄셈 3.곱셈 4.나눗셈");
	         System.out.println("===================================");
	         System.out.println("원하는 걸 입력하세요");
	         int c = sc.nextInt();
	         if (c == 1) {
	            System.out.println(cl1.add());
	         } else if (c == 2) {
	            System.out.println(cl1.sub());
	         } else if (c == 3) {
	            System.out.println(cl1.mul());
	         } else if (c == 4) {
	            System.out.println(cl1.div());
	         }

	      }

	   }
}

'IT 공부 > Java' 카테고리의 다른 글

Abstract  (1) 2022.06.30
Inheritance  (0) 2022.06.30
Class  (0) 2022.06.28
if  (0) 2022.06.23
연산자  (0) 2022.06.23