Language/Java

Language/Java

4-1 자바 조건문

1. 조건문 - if, switch 조건문은 조건식과 문장을 포함하는 블럭{}으로 구성되어 있고, 조건식의 연산관계에 따라 실행할 문장이 달라져서 프로그램의 실행 흐름을 변경할 수 있다. → Jump 즉, 인터럽트랑 같은 부분이다. if문 만일(if) 조건식이 참(true)면 {} 안의 문장을 실행해라. 라는 의미로 수행된다. if (조건식) { // 조건식이 true 일 때 수행될 문장들을 적는다. } if (score > 60) { System.out.println("합격입니다."); } 조건식 조건식은 일반적으로 비교연산자와 논리연산자로 구성된다. // 1. if(90 60) { System.out.println("합격입니다."); } 블럭 내의 문장이 하나뿐인 경우, { } 를 생략할 수 있지만,..

Language/Java

7-6 다형성

다형성 객체지향언어에서 제일 중요한 다형성이다. 다형성을 이해해야 앞으로 나올 객체지향 특징 중 하나인 추상화에 대해서, 그 추상화와 관련된 abstract와 interface에 대해서도 이해할 수 있다. 따라서 다형성을 꼭 이해하고 넘어가야 한다. 먼저 다형성의 정의를 원론적인 의미에서 살펴보자면 다형성은 여러 가지 형태를 가질 수 있는 능력이다. 그러나 이건 원론적인 의미이고, 실제로 다형성을 객체지향언어에 관점에서 보자면 다음과 같이 답해야 한다. 부모의 참조 타입 변수로 자식의 참조 타입 객체를 다루는 것. 여기서 그냥 넘어갈 수도 있지만 눈여겨 봐야 하는 것은 부모의 참조 타입 변수로 자식의 참조 타입 객체를 다루는 것이다. 즉 결론적으로 자식 타입의 객체를 다루는 것이다. 이 말에 초점을 두고..

Language/Java

7-5 캡슐화

객체지향언어의 4가지 특성 중 첫 번째인 캡슐화에 대해서 자세히 알아보자. 이제부터 객체지향에 대해서 깊게 들어가기 때문에 어려워질 수 있다. 우선 위에서 접근 제어자를 사용했는데, 위에 여러가지 예시를 보면서 느꼈겠지만 접근 제어자를 사용하는 이유는 외부로부터 데이터의 접근을 보호하기 위해서 사용하는 것이다. 개발은 혼자하는 것이 아니고 다 같이 하는 것인데, 어떠한 개발자가 실수로 접근하면 안되는 값에 대해서, 접근해서 실수로 값을 바꿔버리면 대참사가 발생한다. 이때, 클래스 내부에 있는 변수는 접근을 못하도록 제한하고, 실제로 메서드 내부에서 변수가 어떤 원리로 동작하는 지에 대해서 숨기는 것을 캡슐화 라고 한다. 종종 캡슐화와 정보 은닉에 대해서 헷갈리는 경우가 많은데, 여기서 정보은닉이 접근 제..

Language/Java

7-4 제어자

제어자 이제부터 객체지향에서 어려운 부분이 시작된다. 다형성이나 추상화를 알기 위해서는 이번 파트에 나오는 용어들에 대해서 자세히 알아야 이해를 할 수가 있다. 제어자는 클래스와 클래스의 멤버에 부가적인 의미를 부여하는 것이다. 즉, 영어에서의 형용사와 같다. 종종 제어자가 메서드나 변수에만 붙는 다고 생각할 수 있는데, 제어자는 클래스에도 붙을 수 있다는 것을 유의하고 들어가자. 제어자에는 두 가지가 있다. 접근 제어자 접근 제어자는 한 개 밖에 사용하지 못하고, 어떠한 접근 권한을 주는 제어자이다. public, protected, (default), private 가 있고, 기본 값이 default라서 따로 선언하지 않으면 default로 지정된다. 그 외 static, final, abstract..

Language/Java

7-3 패키지

패키지 그렇게 중요해보이지 않은 파트이지만, classPath가 무엇인지, 어떻게 돌아가는지 어떤 용도인지에 대한 설명이 있고, 그걸 자세히 모르고 있었기 때문에 배우게 된 것도 많다. 패키지는 서로 관련된 클래스의 묶음이다. 따라서 사실 모든 클래스의 실제 이름은 패키지를 포함한 클래스 이름이다. 가령 String 클래스의 풀네임을 보면 java.lang.String 이라는 이름을 볼 수 있다. java8 버전 이하에서는 rt.jar이라는 압축 파일 내부에 java.lang 폴더 내부에 String.class가 있는 건데, jar 파일을 많이 봐왔지만, 여기서 깔끔하게 설명해준 것이 jar 압축 파일이 클래스 파일을 묶어 놓은 것이라고 한다. 이런 세세한 것도 모르고 있었다. 하지만 파일이 용량이 너무..

Language/Java

7-2 참조변수 super, 생성자 super()

참조변수 super, 생성자 super() 사실 객체지향언어의 대한 개념을 다시 제대로 잡아야겠다고 생각했던 포인트가 이 부분이다. 생성자가 어떤 원리로 어떻게 이루어지는데에 있어서 개념이 러프하다고 생각했고 정말 새로운 것들도 많이 알게되며 까먹었던 것들도 많이 있었다. 우선 참조변수 super와 생성자 super() 는 인스턴스 내에서 사용하던 this 참조변수와 this() 생성자와 같이 전혀 다르다는 걸 인지하고 들어가도록 하자. 참조변수 super 먼저 참조변수 super는 조상을 가리키는 참조 변수이다. 이것도 this와 동일하게 인스턴스 메서드(생성자 포함) 내에서만 사용이 가능하다. 예시를 한 번 살펴보자 class Parent { int x = 10;} class Child extends..

Language/Java

7-1 상속과 오버라이딩

상속 객체지향의 본격적인 특징이 나오는 파트이다. 가장 중요하기 때문에 확실하게 이해하고, 확실하게 넘어가도록 해보자. 객체지향언어의 특징에는 총 4가지가 있다. 캡슐화, 상속, 다형성, 추상화 이번 파트에서는 상속에 대해서 자세히 알아보자. 상속이란 기존의 클래스로 새로운 클래스를 작성하는 것이다. → 객체지향의 특징인 코드의 재사용을 가능하게 해준다. 또 다르게 말하자면 부모와 자식의 관계를 맺어주는 것인데 상속을 선언하는 법은 다음과 같다. class 자식클래스 extends 부모클래스 { } 위 처럼 작성하면 자식클래스는 부모클래스에 있는 멤버들을 상속받게 된다. 즉, 부모에 있는 멤버들을 자식도 쓸 수 있다는 것이다. 단, 여기서 주의해야 할 점은 생성자와 초기화 블럭은 상속이 안되니 주의해야 ..

Language/Java

6. 객체지향언어 1

클래스 클래스는 객체를 정의해놓은 공간이다. 즉, 클래스는 객체를 생성하기 위해서 사용한다. 클래스를 보통 설계도에 비유를 하고 객체를 제품에 비유를 한다. 클래스라는 설계도 안에 객체(제품)을 만들기 위해 여러가지를 선언해두고 클래스(설계도)로 객체를 생성하면 객체(제품)이 생성되는 것이다. 객체 그럼 객체는 무엇일까? 객체의 정의를 현실 세계에 많이 비유를 하곤 하는데, 객체란 실제로 존재하는 것, 사물 또는 개념이라고 한다. 위에서 객체를 제품에 비유했는데 제품마다 쓰이는 용도가 다른 것처럼 객체는 객체가 가지고 있는 기능과 속성에 따라 다르다. 기능은 메소드, 속성이 변수이다. class Tv { String color; boolean power; int channel; void power() {..

Bombo_
'Language/Java' 카테고리의 글 목록 (2 Page)