프로그래밍 언어
-
[ch7 자바 객체] 내부 클래스(inner class)와 익명 클래스(anonymous class)프로그래밍 언어/JAVA 2022. 6. 22. 21:12
내부 클래스(inner class) 내부 클래스는 클래스 내에 선언된 클래이다. 내부 클래스의 장점으로는 2가지가 있다. 1. 내부 클래스에서 외부 클래스의 멤버들을 쉽게 접근할 수 있다. 2. 코드의 복잡성을 줄일 수 있다. (캡슐화) 왼쪽의 A와 B 두 개의 독립적인 클래스를 오른쪽과 같이 바꾸면 B는 A의 내부 클래스(inner class)가 되고 A는 B를 감싸고 있는 외부 클래스(outer class)가 된다. 내부 클래스의 종류와 특징 내부 클래스의 종류는 변수의 선언위치에 따른 종류와 같다. 내부 클래스는 마치 변수를 선언하는 것과 같은 위치에 선언할 수 있으며, 변수의 선언위치에 따라 인스턴스 변수, 클래스 변수(static 변수), 지역변수로 구분되는 것과 같이 내부 클래스도 선언 위치에..
-
[ch7 자바 객체] 추상(abstract) 클래스와 인터페이스(interface)프로그래밍 언어/JAVA 2022. 6. 22. 15:24
추상 클래스(abstract class)란? 클래스를 설계도에 비유한다면, 추상 클래는 미완성 설계도에 비유할 수 있다. 미완성 설계도란, 단어의 듯 그대로 완성되지 못한 채로 남겨진 설계도를 말한다. 클래스가 미완성이라는 것은 멤버의 개수에 관련된 것이 아니라, 단지 미완성 메서드(추상 메서드)를 포함하고 있다는 의미이다. 미완성 설계도로 완성된 제품을 만들 수 없듯이 추상 클래스로 인스턴스는 생성할 수 없다. 추상 클래스는 상속을 통해서 자손 클래스에 의해서만 완성될 수 있다. 추상 클래스 : 미완성 설계도, 인스턴스 생성 불가, 미완성 메서드(추상 메서드)를 포함하고 있는 클래스 추상 클래스 자체로는 클래스로서의 역할을 다 못하지만, 새로운 클래스를 작성하는 데 있어서 바탕이 되는 조상 클래스로서 ..
-
[ch7 자바 객체] 캡슐화(getter & setter)와 다형성(polymorphism)프로그래밍 언어/JAVA 2022. 6. 19. 16:49
접근제어자에 대한 설명은 클릭 [ch7 자바 객체] 패키지(package)와 import, 접근제어자(access modifier) 패키지(package)란? 패키지란, 클래스의 묶음이다. 패키지에는 클래스 또는 인터페이스를 포함시킬 수 있으며, 서로 관련된 클래스들끼리 그룹 단위로 묶어 놓음으로써 클래스를 효율적으로 관리 wonisdaily.tistory.com 캡슐화에 대해 알아보기 전 접근제어자를 알고 넘어가야한다. 위에 포스팅 아래 부분에서 참고! 캡슐화란? 클래스나 멤버, 주로 멤버에 접근 제어자를 사용하는 이유는 클래스 내부에 선언된 데이터를 보호하기 위해서이다. 데이터가 유효한 값을 유지하도록, 또는 비밀번호와 같은 데이터를 외부에서 함부로 변경하지 못하도록 하기 위해서는 외부로부터 접근을 ..
-
[ch7 자바 객체] 패키지(package)와 import, 접근제어자(access modifier)프로그래밍 언어/JAVA 2022. 6. 17. 12:51
패키지(package)란? 패키지란, 클래스의 묶음이다. 패키지에는 클래스 또는 인터페이스를 포함시킬 수 있으며, 서로 관련된 클래스들끼리 그룹 단위로 묶어 놓음으로써 클래스를 효율적으로 관리할 수 있다. 같은 이름의 클래스 일지라도 서로 다른 패키지에 존재하는 것이 가능하므로, 자신만의 패키지를 유지함으로써 다른 개발자가 개발한 클래스 라이브러리의 클래스와 이름이 충돌하는 것을 피할 수 있다. 예를들어 String 클래스의 실제 이름은 java.lang.String이다. java.lang 패키지에 속한 String클래스라는 의미이다. 그래서 같은 이름의 클래스일 지라도 서로 다른 패키지에 속하면 패키지명으로 구별이 가능하다. 클래스가 물리적으로 하나의 클래스파일(.class)인 것과 같이 패키지는 물리..
-
[자바 JAVA] 자동으로 import하는 꿀 방법프로그래밍 언어/JAVA 2022. 6. 17. 11:43
수업 들으면서 import 따라하면 되니까 크게 어려움을 못 느꼈는데 GUI나가면서 import 때문에 문제가 많이 생겼다. 이리저리 찾느라 시간이 많이 걸려 자동으로 import하는 방법을 찾아보고 편리해 적어볼까 한다. 1. 단축키 ctrl+shift+o 에러가 나는 문장 위에 마우스를 올리면 quick fixes available하고 에러 해결을 위한 추천 방법이 뜬다. 직접 클릭해서 하나씩 import해줘도 되지만 'ctrl + shift + o'를 누르면 간편하게 import 할 수 있다. 2. window -> preferences -> sava Actions 설정 window -> preferences 선택 후 검색창에 save Actionsㄹ 입력한다. 그 다음 perform the sel..
-
[ch7 자바 객체] 상속과 오버라이딩(overriding), super 알아보기프로그래밍 언어/JAVA 2022. 6. 16. 23:22
상속이란? 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것이다. 상속을 통해서 클래스를 작성하다면 보다 적은 양의 코드로 새로운 클래스를 작성할 수 있고 코드를 공통적으로 관리할 수 있기 때문에 코드의 추가 및 변경이 매우 용이하다. 이러한 특징은 코드의 재사용성을 높이고 코드의 중복을 제거하여 프로그램의 생산성과 유지보수에 크게 기여한다. 자바에서 상속을 구현하는 방법을 아주 간단한데, 새로 작성하고자 하는 클래스의 이름 뒤에 상속받고자 하는 클래스의 이름을 키워드 'extends'와 함께 써주면 된다. 예를 들어 새로 작성하려는 클래스의 이름이 Child고 상속받고자 하는 기존의 클래스 이름이 Parent라면 아래와 같이 하면 된다. cclass Parent{ } class Child exte..
-
[ch6 자바 객체] 메서드2 ( 오버로딩 & 생성자, this )프로그래밍 언어/JAVA 2022. 6. 16. 14:49
오버로딩(overloading) 메서드도 변수와 마찬가지로 같은 클래스 내에 서로 구별될 수 있어야 하기 때문에 각기 다른 이름을 가져야 한다. 그러나 자바에서는 한 클래스 내에 이미 사용하려는 이름과 같은 이름을 가진 메서드가 있더라도 매개변수의 개수 또는 타입이 다르면, 같은 이름을 사용해서 메서드를 정의할 수 있다. 이처럼, 한 클래스 내에 같은 이름의 메서드를 여러 개 정의하는 것을 '메서드 오버로딩(method overloading)' 또는 간단히 '오버로딩(overloading)'이라 한다. 같은 이름의 메서드를 정의한다고 해서 무조건 오버로딩인 것은 아니다. 오버로딩이 성립하기 위해서는 다음과 같은 조건을 만족해야한다. 1. 메서드 이름이 같아야 한다. 2. 매개변수의 개수 또는 타입이 달라..
-
[ch6 자바 객체] 메서드의 정의와 매개변수, staic프로그래밍 언어/JAVA 2022. 6. 14. 22:11
메서드란? '메서드(method)'는 특정 작업을 수행하는 일련의 문장들을 하나로 묶은 것이다. 기본적으로 수학의 함수와 유사하며, 어떤 값을 입력하면 이 값으로 작업을 수행해서 결과를 반환한다. 예를 들어 제곱근을 구하는 메서드 'Math.sqrt()'는 4.0을 입력하면, 2.0으로 결과를 반환한다. 메서드는 넣을 값(입력)과 반환하는 결과(출력)만 알면 되는 것이다. 그래서 보이지 않는 '블랙박스(black box)'라고도 한다. sqrt()외에도 지금까지 빈번히 사용해온 println()이나 random()과 같은 메서드들 역시 내부적으로 어떻게 동작하는지 몰라도 아무런 어려움은 없다. 메서드는 크게 두 부분, '선언부(header,머리)'와 '구현부(body, 몸통)'로 이루어져 있다. 메서드를..