본문 바로가기

자바/자바 개념

(17)
[Java] 인터페이스 / 2021.11.10 1. 인터페이스란? 인터페이스는 RS-232인터페이스, USB 인터페이스, SATA 인터페이스 하드디스크 등 컴퓨터 주변 장치에서 많이 사용하는 용어이다. 여기서 인터페이스는 서로 다른 하드웨어 장치들이 상호 데이터를 주고받을 수 있는 규격을 의미한다. 인터페이스의 개념은 소프트웨어에도 적용된다. 소프트웨어를 규격화된 모듈로 만들고, 서로 인터페이스가 맞는 모듈을 조립하듯이 응용프로그램을 작성할 수 있다. 2. 자바의 인터페이스 자바에도 인터페이스 개념이 있다. 자바의 인터페이스는 interface 키워드를 사용하여 클래스를 선언하듯이 선언한다. 인터페이스를 선언하는 예 interface PhoneInterface { // 인터페이스 선언 public static final int TIMEOUT = 10..
[Java] 추상 클래스 / 2021.11.10 추상 클래스는 상속에서 슈퍼 클래스로 사용된다. 1. 추상 메소드 추상 메소드란 선언은 되어 있으나 코드가 구현되어 있지 않은, 즉 껍데기만 있는 메소드이다. 추상 메소드를 작성하려면 abstract 키워드와 함께 원형만 선언하고 코드는 작성하지 않는다. // 추상 메소드 선언 예 public abstract String getName(); public abstract void setName(String s); 2. 추상 클래스 추상 클래스가 되는 경우는 다음 2가지로서, 모두 abstract 키워드로 선언해야 한다. // (1) 추상 메소드를 포함하는 클래스 abstract class Shape{ // 추상 클래스 선언 public Shape() { } public void paint() { draw(..
[Java] 메소드 오버라이딩 / 2021.11.02 1. 메소드 오버라이딩이란? 메소드 오버라이딩은 슈퍼 클래스와 서브 클래스의 메소드 사이에 발생하는 관계이다. 슈퍼 클래스에 선언된 메소드와 같은 이름, 같은 리턴 타입, 같은 매개변수 리스트를 갖는 메소드를 서브 클래스에서 재작성하는 것이다. 메소드 오버라이딩은 '슈퍼 클래스 메소드 무시하기 혹은 덮어쓰기'로 표현할 수 있다. 이는 슈퍼 클래스의 메소드를 무시하고 서브클래스에서 오버라이딩된 메소드가 무조건 실행되도록 한다는 것인데. 이런 처리를 동적 바인딩이라고 부른다. 예시를 통해서 알아보자. 아래의 코드는 Shape 클래스를 상속받은 3개의 클래스 Line, Rect, Circle클래스를 만들고, Shape의 draw()를 오버라이딩한 코드이다. 메소드의 이름, 리턴 타입, 매개변수 리스트는 모두 ..
[Java] 캐스팅, instanceof 연산자 / 2021.11.01 1. 캐스팅 (casting) 캐스팅이란 타입 변환을 말한다. 자바에서 캐스팅은 업 캐스팅과 다운 캐스팅으로 나뉜다. 1-1. 업캐스팅 (upcasting) 서브 클래스의 객체에 대한 레퍼런스를 슈퍼 클래스 타입으로 변환하는 것을 업캐스팅이라고 한다. 업캐스팅은 슈퍼 클래스의 레퍼런스로 서브 클래스의 객체를 가리키게 한다. (서브 클래스 객체가 슈퍼 클래스 타입으로 형 변환되는 것) 예시를 통해서 알아보자. package Chapter5; class Person{ String name; String id; public Person(String name){ this.name = name; } } class Student extends Person{ String grade; String dapartment;..
[Java] 상속, 상속과 protected 접근 지정자, 상속과 생성자, super () / 2021.08.02 * 참고자료 : 명품 자바 프로그래밍 1. 상속이란? 상속은 부모 클래스에 만들어진 필드와 메소드를 자식 클래스가 물려받는 것이다. 상속을 선언하면, 자식 클래스는 부모 클래스에 만들어진 필드와 메소드를 만들지 않고 만든 것과 같은 효과를 얻는다. 단, 상속은 클래스 사이의 상속이지 객체 사이의 상속은 아니다. 다시 말해, 자식 객체는 자식 클래스와 부모 클래스에 만들어진 모든 멤버를 가지고 생성된다. 2. 상속의 장점 예를 들어, 4개의 클래스가 있다. 이 4개의 클래스는 같은 코드를 포함하는데, 이 코드에 오류가 있어 코드를 수정하려면 클래스 4개를 각각 모두 수정해 주어야 한다. 이처럼 코드가 중복되면 클래스의 유지 보수가 번거롭다. 그러나 상속을 이용하면 간단히 해결된다. 공통된 코드를 하나의 클..
[Java] for-each문, for-each문 활용 / 2021.07.28 1. for-each문이란? 기존의 for문과는 달리, for-each문은 배열의 크기만큼 루프를 돌면서 각 원소를 순차적으로 접근할 수 있다. for-each문의 구조는 다음과 같다. 2. for-each문 활용 (1) 배열 n에 들어 있는 모든 정수를 더하는 코드 - for문 활용 public class Main { public static void main(String[] args) { int [] n = {1, 2, 3, 4, 5}; int sum = 0; for(int i = 0; i n[1] -> n[2] -> n[3]..
[Java] ArrayList, 학생 성적 예제 문제 / 2021.07.26 * 참고자료 : Do it! 자바 프로그래밍 입문 1. ArrayList란? 기본 배열은 프로그램에서 사용하려면 항상 배열 길이를 정하고 시작해야 한다. 그러나 처음에 정한 배열의 길이를 넘어서게 되는 경우에는 코드를 수정해야 한다. 혹은 중간에 배열을 삭제해야 된다면 배열의 중간을 비워 둘 수 없으므로 배열 요소의 위치를 변경해야 한다. 이 과정을 수행하려면 힘들고 복잡할 것이다. 그래서 자바에서는 배열을 조금 더 쉽게 사용할 수 있도록 ArrayList를 제공한다. 2. ArrayList 클래스의 주요 메서드 (1) boolean add(E e) : 요소 하나를 배열에 추가한다. E는 요소의 자료형을 의미한다. (2) int size() : 배열에 추가된 요소 전체 개수를 반환한다. (3) E get..
[Java] 객체 간 협력, 교통수단 예제문제 / 2021.07.26 * 참고자료 : Do it! 자바 프로그래밍 입문 객체 지향 프로그램은 객체를 정의하고 객체 간 협력으로 만든다. 객체의 협력이 어떻게 이루어지는지 알아보자. 학생이 학교에 가기 위해 수행하는 여러 과정을 객체 지향 프로그램으로 만들 수 있다. 이 예제에서는 학생이 버스, 지하철, 택시를 타고 가는 것을 객체 지향 프로그래밍해보겠다. (1) 학생 클래스 구현하기 학생 클래스는 "이름", "가진 돈"을 멤버 변수로 가진다. 그리고 "버스를 탄다", "지하철을 탄다", "택시를 탄다", "학생의 현재 정보를 보여준다"를 메서드로 가진다. 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 29 30 31 32 33 34 35 ..