객체지향 프로그래밍(oop)
: 데이터를 객체로 취급하여 프로그램에 반영한 것으로 캡슐화, 다형성, 추상화, 상속 등의 특징을 이용하여
코드의 재사용성을 증가시키고, 유지보수를 감소시킨다는 장점이 있다
클래스
: 객체를 정의해 놓은 것으로 객체를 만들기 위한 설계도
: 클래스를 구성하는 변수와 메소드를 각각 멤버 변수, 멤버 메소드라고 한다
-main()을 가진 클래스: 실행목적-main()이 없는 클래스: 설계목적
메소드
클래스의 기본 구성 요소로 어떤 기능을 가진 최소한의 작업단위(ex) 계산목적, 데이터 저장목적 ,,,)
객체(=인스턴스)
: 클래스로부터 객체가 만들어지는 과정을 인스턴스화라고 말하며,
변수, 메소드 등의 기능을 모두 포함한 개념
추상화
: 새로운 자료형을 저장할 목적으로 만들어진 클래스(=설계도)
: 현실의 객체가 갖는 속성과 기능은 추상화 과정을 거쳐 클래스로 정의된다, 클래스는 구체화 과정을 거쳐
객체(=인스턴스)가 된다
객체 생성
형식) 클래스명 객체변수명 = new 클래스명();
// 객체를 저장할 수 있는 공간 만들기
Car morning; //Car 클래스 객체 선언(morning 변수명으로 접근)
morning = new Car(); //객체 생성
System.out.println("morning=>"+morning);
//morning=>j210105.Car@15db9742
//객체의 주소값이 출력된다
메소드 사용 이유?
1. 편리성 추구=> 재사용성, 라인수가 줄어든다
2. 코딩이 줄어드는 효과=> 개발시간 단축(비용 절감)
3. 모듈화
예시) TV.java TVHandling.java
package j210105;
public class TV {
//1.tv 정보
String maker;
String name;
String color;
int size; //인치
boolean power=false;//전원상태
int channel;//0
//2.tv 기능
//1)리모콘의 전원 on -> 매개변수x,반환값x
void turnOn() {
power=!power;//power=true;
System.out.println("로딩중..TV전원 On!! ");
}
//2)리모콘의 전원 off
void turnOff() {
power=!power;//power=false;
System.out.println("TV전원 off");
}
//3)채널 up-> 변경 -> 매개변수o,반환값x
void channelUp(int ch) {
channel=ch;
System.out.println("현재 변경된 채널은=>"+channel);
}
//4)채널 down
void channelDown(int ch) {
channel=ch;
System.out.println("현재 변경된 채널은=>"+channel);
}
//-> 여기서 ch는 매개변수 이므로 여러 메서드에서 같은 변수명으로 불러도됨
//메소드 호출시 생성되고 메소드 끝나면 소멸되므로(로컬변수)
//5)tv 채널정보
void tvDisplay() {
System.out.println("===TV정보 출력===");
System.out.println("모델명=>"+name);
System.out.println("색상=>"+color);
System.out.println("현재채널=>"+channel);
System.out.println("전원상태=>"+power);
}
//6)말하면 채널변경 기능-> 매개변수o, 반환값x-> 말(string)
void speakChannel(String ch) {
if(ch.contentEquals("ocn")) {
channel=35;
}else if(ch.contentEquals("sports")) {
channel=121;
}
System.out.println("현재 채널은"+channel+"로 이동중입니다.");
}
}
package j210105;
public class TVHandling {
public static void main(String[] args) {
// TODO Auto-generated method stub
//TV클래스 -> 객체 생성
TV smartTV = new TV();
smartTV.name="삼성smartTV";
smartTV.maker="삼성"; //객체명.멤버변수=값
smartTV.color="검정색";
smartTV.size=50;
//기능테스트
smartTV.turnOn();
smartTV.channelUp(23);//channelUp 메소드 호출하면서 23매개변수 전달
smartTV.channelDown(12);
smartTV.speakChannel("ocn");
//채널정보 출력
smartTV.tvDisplay();
}
}
/*
로딩중..TV전원 On!!
현재 변경된 채널은=>23
현재 변경된 채널은=>12
현재 채널은35로 이동중입니다.
===TV정보 출력===
모델명=>삼성smartTV
색상=>검정색
현재채널=>35
전원상태=>true
*/
equals() vs contentEquals()
s.equals()
> s 변수와 매개변수의 문자열 비교(string객체일 경우만 가능)
> string 객체 끼리의 문자열을 비교하여 같으면 true를 반환하는 메소드
s.contentEquals()
> s 변수와 매개변수의 문자열 비교 (StringBuffer / StringBuilder / Char Array 상관없음)
> String 객체와 다른 객체의 문자열을 비교하여 동일하면 true를 반환하는 메소드
'JAVA' 카테고리의 다른 글
[JAVA]생성자 개념/ 목적/ 예시 (0) | 2021.01.11 |
---|---|
[JAVA]메서드(매개변수O, 반환값O), 캡슐화, private, Setter Method, Getter Method (0) | 2021.01.06 |
[JAVA] 반복문(while, do~while, for), 탈출문(break, continue) (0) | 2021.01.04 |
[JAVA]삼항연산자, 대입연산자, 강제형변환, 자동형변환, printf(), if~else, switch ~ case (0) | 2021.01.01 |
[JAVA]식별자, 예약어, 로컬변수, 인스턴스변수, 클래스변수, 자료형, 논리연산자, 비트연산자 (0) | 2020.12.31 |