노베이스에서 개발자까지

자바 6일차(클래스,필드,메서드,) 본문

Java/멀캠 자바

자바 6일차(클래스,필드,메서드,)

for1person 2022. 9. 26. 23:59

객체

 

 

속성과 동작으로 구성

 

 

동작: 웃다,걷다 ,달린다 ,멈춘다

 

이를 필드라 함

 

 

 

 

속성:이름, 나이, 모델명, 색깔

 

이를 메소드라 함

 

 

사람이 전자계신기를 이용하고 ,    전자계산기는 계산 결과를 사람에게 보여줌

        ( 메소드 호출)                                                 (결과 리턴)

 

 

객체간 상호작용 수단은 메소드이며 객체가 다른 객체의기능을 이용하는 것이 메소드 호출

 

 

 

 

리턴값 = 전자계산기객체.메소드(매개값1, 매개값2,  등등) ;

 

ex)

10과 20을 주고 더하기 기능

 

10,20 은 더하기 기능의 매개값

 

 

int result = Calculator.add(10, 20);

   리턴한 값을 int 변수에 저장

 

 

 

객체지향: 만들고자 하는 완성품인 객체를 모딜링하고, 집합 관계에 있는 부품 객체와

 

사용 관계에 있는 객체를 하나씩 설계한 후 조립하는 방식으로 프로그램을 개발하는 기법

 

 

클래스

 

public class Car {    //클래스 선언의 시작

}  // 클래스 선언의 끝

 

설계도에 해당하는 부분으로 객체를 생성하기 위한 필드와 메소드가 정의되어 있음

 

클래스로부터 만들어진 객체를 해당 클래스의 인스턴스라고 함

 

 

 

자동차 객체는 자동차 클래스의 인스턴스인 셈

 

 

하나의 클래스로부터 여러 개의 인스턴스를 만드는 것  =  동일한 설계도로 여러 대의 자동차를 만드는 것

 

 

인스턴스화 : 클래스로부터 객체를 만드는 과정

 

 

              설계                                               인스턴스화

개발자      >                  클래스(설계도)                 >                      인스턴스(객체)    (자동차)

 

 

 

 

new 

 

new 클래스();

 

클래스로부터 객체를 생성시키는 연산자

 

new 연산자 뒤에는 생성자가 오는데, 생성자는 클래스() 형태를 가지고 있음

 

 

 

클래스 변수 ; 

변수 = new 클래스();

 

클래스 선언

public class Student {
}

 

클래스로부터 객체 생성

 

public class StudentExample {

   public static void main (String[] args ) {

        Student s1 = new Student();           // new로 객체1 생성

        Student s2 = new Student();		 	  // new로 객체 2 생성

        System.out.println("s2 변수가 또 다른 Student 객체를 참조합니다.");
   }

}

 

하나의 클래스로 객체 1, 2 두개를 만들 수 있음

 

 

 

 

클래스의 구성 멤버

 

필드,생성자,메소드 가 있고 생략이 될수도 복수의 개수로 생성될 수도 있음

 

 

public class ClassName{

int fieldname ;   //필드 :	객체의 데이터가 저장되는 곳 


ClassName() { 		생성자	:	객체 생성 시 초기화 역할 담당
}

void methodName() {		메소드	:	객체의 동작에 해당하는 실행블록
}

}

 

필드

 

선언 형태는 변수와 비슷 하지만 변수와 다름

 

변수는 생성자와 메소드 내에서만 사용되고 생성자와 메소드가 실행 종료되면 자동 소멸되지만

 

필드는 생성자와 메소드 전체에서 사용되며 객체가 소멸되지 않는 한 객체와 함께 존재함

 

 

생성자

 

생성자는 new 연산자로 호출되는 특별한 중괄호{} 블록.

 

생성자의 역할은 객체 생성 시 초기화를 담당

 

필드를 초기화 하거나 메소드를 호출해서 객체를 사용할 준비를 함

 

메소드와 비슷하게 생겼지만, 클래스 이름으로 되어 있고 리턴 타입이 없음

 

 

 

메소드

 

객체의 동작에 해당하는 중괄호{}블록을 말함

 

메소드를 호출하게 되면 중괄호 블록에 있는 모든 코드들이 일괄적으로 실행됨

 

메소드는 객체 간의 데이터를 전달하는 수단, 외부(호출한 곳)로부터 매게 값을 받아 실행에 이용하고,

 

실행 후 결과 값을 외부(호출한 곳)로 리턴할(돌려 줄)수도 있음

 

 

 

 

 

필드 선언

 

타입 필드 [ = 초기값 ] ;       변수랑 비슷하지만 다름

 

String compnay = "현대자동차" ;

 

String model = "그렌저" ; 

 

int maxSpeed = 300;

 

int productionYear ;

 

boolean engineStart;

 

 

 

클래스 필드 선언

 

public class Car{

	String compnay = "현대자동차" ;
	String model = "그렌저" ;
    String color = " 검정 " ;
	int maxSpeed = 350;
	int Speed ;
    
    }

 

 

외부 클래스에서 Car 필드값 읽기와 변경

 

	public class CarExample{
    	public static void main(String[] args) {
        
        	//객채셍성 (인스턴스)
        Car myCar = new Car();
        
        //필드갑 읽기
       Systemout.println("제작회사: " +myCar.company);
       Systemout.println("모델명: " + myCar.model);
       Systemout.println("색깔: " + myCar.color) ; 
       Systemout.println("최고속도: " + myCar.maxSpeed);
       Systemout.println("현재속도: " + myCar.speed);
       
       myCar.speed = 60;
       SYstem.out.println("수정된 속도: " + myCar.speed);
       }
       }

 

 

생성자

 

new 연산자로  클래스로부터 객체를 생성할 때 호출되어 객체의 초기화를 담당

 

객체 초기화란 필드를 초기화 하거나 메소드를 호출해서 객체를 사용할 준비를 하는것을 말함

 

public class Car {

	Car(String color, int cc) {
    }
    }
    
    
    
    //생성자를 호출해서 객체 생성
    
    public class carExample{
    	public static void main(String[] args) {
        		car my Car = new Car("검정", 3000);
                	//Car myCar = new Car();   << x   기본 생성자를 호출할 수 없음
	}
}

 

필드 초기화

 

public class Korean {
String nation = "대한민국" ;
String name;
String ssn;


Korean k1 = new Korean();
Korean k2 = new Korean();


=====================================
krean 클래스에 nation 필드를 선언하면서 "대한민국"으로 초기값을 줘서

Korean 클래스로 부터 생성된 k1 k2 객체의 nation 필드에는 대한미눈기 들어감

======================================

public class Korean {

 //필드
String nation = "대한민국" ;
String name;
String ssn;

// 생성자
public Korea(String n, String s) {
name = n;
ssn= s;
	}
}

===================================
Korean k1 = new Korean("박자바", "011225-1234567");
Korean k2 = new Korean("김자바", "930525-0654321");

코드에서 박자바, 감자바는 매개 변수 n을 통해 전달되고

주민등록 번호는 매개 변수 s를 통해 전달이 됨

=====================================

public class Korean {

 //필드
String nation = "대한민국" ;
String name;
String ssn;

// 생성자
public Korea(String n, String s) {
name = n;
ssn= s;
	}
}

 

객체 생성 후 필드값 출력

 

public class KoreanExample {
	public static void main(String[] args) {
    		Korean k1 = new Korean ("박자바", "011225-1234567");
            system.out.println("k1.name : " + k1.name);
            system.out.println("k1.ssn : " + k1 ssn);

			Korean k1 = new Korean ("김자바", "93525*0654321");
            system.out.println("k2.name : " + k2.name);
            system.out.println("k2.ssn : " + k2 ssn);
}
}



출력되는 값

k1.name : 박자바
k1.ssn : 011225-1234567
k2.name: 김자바
k2.ssn : 930525-0654321

 

 

============================================================

 

6일차

 

클래스 끝날때 까진 그럭저럭 따라갈만 했는데

 

갑자기 어마어마한 속도로 치고나가서 완전히 놓쳐버렸다.

 

강의 내용을 놓치니 오늘 수업한 내용 복습은 의미가 없을 거 같아서

 

집에 가지고 있던 책으로 앞에부터 복습했는데

 

들인 시간에 비해 진도가 너무 느린 거 같다.

 

딜레마에 빠져버렸다