Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- ssl.key
- django slack
- 숲을 바라보는 개발자
- MySQL
- 개발자의 마인드
- 비즈니스적 관점에서 생각하는 개발자
- django slack bot
- #백준 #드래곤커브 #알고리즘
- private.pem
- 정렬
- #데이터베이스 #트랜잭션 #ACID #격리수준
- #알고리즘
- 데이터베이스 오류
- 웹소켓 api
- 알고리즘
- django #django 5.0 #django 5.0 요약
- innodb_buffer_pool_size 오류
- slack bot
- 개발자와 비즈니스
- django 슬랙봇
- 비즈니스적 관점에서 생각하는 개발자 #개발자 마인드
- public.pem
- sed명령어
- AWS Aurora
- 업비트 웹소켓
- 개발자에세이
- 비즈니스
- 개발자와 비즈니스 관계
- add colume
- 슬랙봇
Archives
- Today
- Total
Info-Tech
객체지향의 특징 본문
객체지향적 언어
예를들어 하나의 자동차를 만드는 공장이라고 생각하자.
자동차를 이루는 구성품은 바퀴, 몸체, 엔진, 창문 등등이 있다.
객체지향적은 이러한 객체(구성품)을 먼저 설계하고 적절히 조합을 하여 하나의 프로그램으로 완성시키는 기법이다.
(절차 지향적은 바퀴 -> 몸체 -> 엔진 ->창문 이렇게 순서대로 절차를 거쳐서 만들어야함, 하나가 고장나면 전체가 고장 나게 설게 될 수도 있다)
이러한 객체지향의 특성에는 크게 3가지가 있다.
- 상속
- 공통적인 내용을 담는 상위 class를 선언 후 하위 클래스에서 상속 받아서 쓸 수 있다 (extends 사용)
//Car라는 상위 클래스 선언
class Car{
private String model;
protected int wheelCount;
public setModel(String model){
this.model = model;
}
public String getModel(){
return model;
}
}
// Car를 상속 받음
class Bmw extends Car{
void setBmw(){
//상위 클래스의 method 사용
setModel('BMW’);
//상위 클래스의 변수에 접근 가능
wheelCount = "4";
}
}
public static void main(String[] args) {
Bmw b = new Bmw(); // Bmw 객체 생성
b.setBmw(); // Car 상속 받았기 때문에 Car클래스에 있는 매개변수와 함수를 사용할 수 있음.
System.out.println("모델 : "+b.getModel + " : 차이름 "+ b.name );
}
- 캡슐화
- 변수와 메소드를 묶어서 관리해 주는 기법이다.
- 필요있는 정보만 보여주고, 필요없는 정보는 은닉시켜주는 기법이다.
- 접근지정자, getter 와 setter를 적절히 사용해서 구현해주면 된다.
class Car{
//model is private var
private String model;
protected int wheelCount;
//setter
public setModel(String model){
this.model = model;
}
//getter
public String getModel(){
return model;
}
}
- 추상화
- 실제세계를 모델링을 통해 재연해본 것이다. 즉 사물의 공통점을 뽑아서 표현해주는 것이다.
- 예를들어 사람을 예를 들어본다.
실제로 세계에 존재하는 사람들은 다양하다.
하지만 아래와 같이 모두가 가지는 공통점을 뽑아 낼 수 있다.
class 사람 {
눈 ,코 ,입 -> 속성(프로퍼티)
심장이 뛴다 -> 메소드
잠을 잔다 -> 메소드
}
- 이런식으로 구현을 제외한 모델을 설계한다고 생각 하면 된다.
- 다형성
- 하나의 클래스 혹은 메소드가 다른 행위를 하는 것이다.
- 예를 들어 Keyboard의 형태를 살펴보자.
키보드는 ‘눌러야지’ 작동되는 제품이다.
예를 들어 ‘Enter’를 누르면 실행이 되고, ‘Esc’키를 누르면 취소가 된다.
이처럼 키보드는 ‘누른다’는 같은 동작을 하고 있지만 각 키마다는 다른 action이 일어 날 수 있다.
- 오버로딩 (Overloading)
- 같은 이름의 method가 있는데 파라미터만 다른 형태
void a (int a){
System.out.println(“a는 Integer type");
}
void a (String a){
System.out.println(“a는 String type");
}
- 오버라이딩(overriding)
class A{
public String x(){ System.out.print(“A.x”);
}
class B extends A {
public String x() { System.out.print(“B.x");
}
main(){
A obj = new B();
obj.x();
}
위의 코드를 보면 A obj에 B클래스를 생성해주고 있다.
그 후 obj.x() 에는 무엇이 호출 될 까?
바로 “B.x”가 출력이 된다. 그 이유는 클래스 B에서 A를 상속 받긴 했지만 다시 x를 재정의해서 쓰고 있다.
이런 것을 오버라이딩이라고 한다.
'프로그래밍 > 자바' 카테고리의 다른 글
BufferedReader 쓰는 방법 (0) | 2018.10.25 |
---|
Comments