Java - Java(객체지향 프로그래밍)의 특징

2020. 8. 18. 22:38Java/Java

반응형

자바는 객체지향 프로그래밍 몇 가지 특성을 가지고 있다.

 


자바의 특징

1.객체지향 언어의 4대 특징
       추상화->캡슐화=>다형성->상속성
        =>C++,C#

2.플랫폼에 독립적이다.
   윈도우,리눅스,맥OS
   =>운영체제에 상관없이 다 실행이 가능

  윈도우 개발=>리눅스,맥OS (코드이식)
            소스코드 변경없이 바로 사용

 

 실행할때는 독립적이지 않다.(의존적이다.)
   =>운영체제에 맞는 JDK를 설치해야 한다.


   윈도우 =>윈도우 JDK=>실행
   맥OS   =>맥JDK
   Linux   =>리눅스 JDK


객체란? 

    현실세계에서 존재하는 모든 사물

    (모든 것이 객체가 될 수 있다.=>자바에서는 class를 하나의 객체로 본다.)


자바의 클래스

  - 자바의 클래스는 멤버변수와 메서드를 가지고 있다.

  - 하나의 파일에 클래스를 한개이상 작성할 수 있다.

  - 하나의 클래스는 파일명과 같아야한다.(class A =>A.java)

     => main 메소드가 있을경우 그 클래스가 파일명과 같아야 한다.

 

**핵심클래스를 찾아서 파일명을 부여한다.=>main()를 가진 클래스
**핵심클래스=>public class로 시작한 클래스를 찾아서 이름부여
**하나의 파일에 public class로 시작하는 클래스는 한개이상 작성불가


자바의 메서드

   - 메서드는 클래스 내에서 작업을 처리해주도록 정의되어 있는 것이다.

   - 크게 메서드는 반환이 없는 void형과 반환형 메서드가 있다.

void startEnginee() { //메서드의 기능->멤버변수의 값을 저장,조회,출력
		sidong=true;
		System.out.println("시동이 걸림!");
	}
int getOil() { //메서드의 기능->값을 전달  => oil값을 전달해준다.
	return oil
	      }

 

 

 - 메서드에는 매개변수를 받아서 처리하는 메서드가 있다.

void speedDown(int speed) {
		current_speed-=speed;//current_speed=current_speed-speed;
		System.out.println(speed+"km 만큼속도가 감소됨!");
	}

 - 메서드를 작성하는 이유 

 =>단순하고 ,반복적인 문장이 많기 때문에 소스코드를 줄이기위해서 메서드를 작성한다. 
    ****반복, 코드를 줄이기 위해서****


자동차를 추상화 한 클래스 Car.java

public class Car {  //TV,Computer,Mouse,Beam~

	//1.자동차의 특성(공통적인 특성)=>멤버변수(클래스 내부에 선언된 변수)를 통해서 저장(8자료형)
	String name;//명사
	int output;//배기량
	int year;//년식
	String color;//차의 색깔
	//현재 상태
	int current_speed;//차의 속도
	boolean sidong=false; //시동유무
	//2.기능=>메서드로 처리
	
	//1) 시동걸기=>단순,반복
	void startEnginee() { //메서드의 기능->멤버변수의 값을 저장,조회,출력
		sidong=true;
		System.out.println("시동이 걸림!");
	}
	
	//2) 속도 증가=>멤버변수의 값을 계산해서 저장=>매개변수 O, 반환값 X
	void speedUp(int speed) {
		current_speed+=speed;//current_speed=current_speed+speed;
		System.out.println(speed+"km 만큼속도가 증가됨!");
	}
	//3) 속도 감소
	void speedDown(int speed) {
		current_speed-=speed;//current_speed=current_speed-speed;
		System.out.println(speed+"km 만큼속도가 감소됨!");
	}
	
	//4) 주차기능=>단순,반복=>매개변수 X, 반환값 X
	void stop() {
		sidong=false;
		current_speed=0;//현재 속도는 0
		System.out.println("정상적으로 주차 완료됨!");
	}
	
	//5)차의 정보를 제공(=출력)=>단순,반복
	void carInfoPrint() {
	   System.out.println("===차의 정보===");
	   System.out.println("차의 이름=>"+name);
	   System.out.println("차의 배기량=>"+output);
	   System.out.println("차의 색깔=>"+color);
	   System.out.println("차의 속도=>"+current_speed);
	}
}

위 Car을 사용하는 CarHandling.java

public class CarHandling {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
      //1.객체(=자동차)생성=객체(저장할 대상자)를 저장할 수있는 공간을 만들어라
		//형식) 설계도이름(=클래스이름) 객체명(=변수)=new 클래스명();
		int age;//4byte 공간이 생성
		//Car morning; 기억공간이 생성X(객체선언)
		//Car morning,sm5; 객체로 나열가능
		Car morning=new Car(); //Person hong=new Person();
		System.out.println("morning=>"+morning);
		//j200717.Car@15db9742 =>패키지명.클래스명@16진수(위치)
		//서울시 강남구 대현빌딩 3층
		//2)객체명.멤버변수=저장할값
		morning.name="모닝";
		morning.output=1000;
		morning.color="blue";
		morning.year=2020;
		//3)운전=>시동걸기->메서드호출=>객체명.호출할 메서드명()
		morning.startEnginee();
		morning.speedUp(150);//speedUp메서드 호출하면서 150값을 전달
		morning.speedDown(60);//150-60=90
		//저장된 정보를 출력=>객체명.멤버변수
		System.out.println("차이름=>"+morning.name);
		System.out.println("차의 배기량=>"+morning.output);
		System.out.println("차의 현재속도=>"+morning.current_speed);
		//work Method=>main대신에 처리해줄 메서드 존재
		System.out.println("==============");
		morning.carInfoPrint();//데이터 조회
	}

}

CarHandling.java를 실행하면 해당 파일에서 Car 클래스를 불러와 Car클래스의 메소드와 변수를 사용 가능하다.

반응형

'Java > Java' 카테고리의 다른 글

Java - 오버로딩  (0) 2020.08.21
Java - 캡슐화  (0) 2020.08.19
Java - 형변환  (0) 2020.08.18
Java - 연산자2(관계연산자, 논리연산자,대입연산자, 삼항연산자)  (0) 2020.08.18
Java - 산술, 증감 연산자  (0) 2020.08.18