웹개발/JAVA

    [JAVA] 다형성( polymorphism )

    1. 다형성( polymorphism )이란? 객체지향 개념에서 다형성이란 여러 가지 형태를 가질 수 있는 능력을 의미하며, 자바에서는 한 타입의 참조 변수로 여러 타입의 객체를 참조할 수 있도록 함으로써 다형성을 프로그램적으로 구현하였다. ( 하나의 변수로 다른 타입의 다양한 객체를 참조할 수 있다. ) 좀 더 구체적으로 말하자면 조상클래스 타입의 참조 변수로 자손클래스의 인스턴스를 참조할 수 있도록 하였다는 것이다. 1 2 3 4 5 6 7 8 9 10 11 12 class Tv { boolean power; int channel; void power() {} void channelUp() {} void channelDown() {} } // 5개 사용 가능​ class CaptionTv extend..

    [JAVA] 제어자( modifier )

    1. 제어자( modifier )란? 제어자란 클래스, 변수 또는 메소드의 선언부에 함께 사용되어 부가적인 의미를 부여한다. 제어자의 종류는 크게 접근 제어자와 그 외의 제어자로 나눌 수 있다. 접근 제어자 public, protected, ( default ), private 그 외 static, final, abstract, transient, synchronized, volatile, strictfp ... 제어자는 클래스나 멤버변수와 메소드에 주로 사용되며, 하나의 대상에 대해서 여러 제어자를 조합하여 사용하는 것이 가능하다. 단, 접근제어자는 한 번에 4가지 중 하나만 선택해서 사용할 수 있다. 2. static - 클래스, 공통적인 static은 '클래스의' 또는 '공통적인'의 의미를 가지고 ..

    [JAVA] 상속( inheritance ), 오버라이딩( overriding )

    1. 상속( inheritance ) 상속의 정의와 장점 상속이란 기존 클래스를 재사용하여 새로운 클래스를 작성하는 것이다. 상속을 통해서 클래스를 작성하면 보다 적은 양의 코드로 새로운 클래스를 작성할 수 있고 코드를 공통적으로 관리할 수 있기 때문에 코드의 추가 및 변경이 매우 용이하다. ==> 코드의 재사용성을 높이고 코드의 중복을 제거하여 프로그램의 생산성과 유지보수에 크게 기여한다. 상속을 구현하기 위해선 새로 작성하고자 하는 클래스의 이름 뒤에 상속받고자 하는 클래스의 이름을 키워드 extends와 함께 써 주기만 하면 된다. 조상클래스 부모( parent )클래스, 상위( super )클래스, 기반( base )클래스 자손클래스 자식( child )클래스, 하위( sub )클래스, 파생된( ..

    [JAVA] 오버로딩( Overloading ), 생성자( Constructor ), 변수의 초기화

    1. 오버로딩( Overloading ) 오버로딩이란? 한 클래스 내에 같은 이름의 메소드를 여러 개 정의하는 것을 '메소드 오버로딩( method overloading )' 또는 '간단한 오버로딩( overloading )이라고 한다. 하나의 메소드 이름으로 여러 기능을 구현하기 위해 사용한다. 오버로딩의 조건 메소드 이름이 같아야 한다. 매개변수의 개수 또는 타입이 달라야 한다. 메소드의 이름이 같더라도 매개변수가 다르면 서로 구별될 수 있기 때문에 오버로딩이 가능하다. 반환 타입은 오버로딩을 구현하는데 아무런 영향도 주지 않는다. 오버로딩의 장점 하나의 이름을 사용하고 기억하면 되므로 '이 메소드는 이름이 같으니 같은 기능을 하겠구나'라고 쉽게 예측이 가능하다. 메소드 이름을 절약할 수 있다. ==..

    [JAVA] 변수와 메소드

    1. 변수 변수는 클래스 변수, 인스턴스 변수, 지역 변수 총 세 가지가 있다. 변수의 종류를 결정짓는 중요한 요소는 '변수의 선언된 위치'이므로 변수의 종류를 파악하기 위해서는 변수가 어느 영역에 선언되었는지를 확인하는 것이 중요하다. 멤버 변수를 제외한 나머지 변수들은 모두 지역 변수이며 멤버 변수 중 static 붙은 것은 클래스 변수, 붙지 않는 것이 인스턴스 변수이다. 변수의 종류 선언 위치 생성시기 클래스 변수 클래스 영역 클래스가 메모리에 올라갔을 때 인스턴스 변수 인스턴스가 생성되었을 때 지역 변수 클래스 영역 이외의 영역 ( 메소드, 생성자, 초기화 블록 내부 ) 변수 선언문이 수행되었을 때 인스턴스 변수( instance variable ) 클래스 영역에 선언되며 클래스의 인스턴스를 생..

    [JAVA] 객체지향 언어, 클래스와 객체

    1. 객체지향 언어 기본 개념은 '실제 세계는 사물( 객체 )로 이루어져 있으며 발생하는 모든 사건들은 사물 간의 상호작용이다.'라는 것이다. 실제 사물의 속성과 기능을 분석한 다음 데이터( 변수 )와 함수로 정의함으로써 실제 세계를 컴퓨터 속에 옮겨 놓은 것과 같다. 객체지향 언어의 주요 특징 코드의 재사용성이 높다. 새로운 코드를 작성할 때 기존의 코드를 이용하여 쉽게 작성할 수 있다. 코드의 관리가 용이하다. 코드 간의 관계를 이용해서 적은 노력으로 쉽게 코드를 변경할 수 있다. 신뢰성이 높은 프로그래밍을 가능하게 한다. 제어자의 메소드를 이용해서 데이터를 보호하고 올바른 값을 유지하도록 하며, 코드의 중복을 제거하여 코드의 불일치로 인한 오작동을 방지할 수 있다. 2. 클래스와 객체 클래스와 객체..

    [JAVA] 배열( array )

    1. 배열( array )이란? ( 참조형 ) 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것을 배열이라 한다. " 배열은 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것 " 여기서 중요한 것은 같은 타입이어야 한다는 것이다. 서로 다른 타입의 변수들로 구성된 배열은 만들 수 없다. Ex) int[ ] score = new int[5]; // 5개의 int값을 저장할 수 있는 배열 생성 메모리 상에서 기본형 애들은 Stack( Call Stack )에 만들어지고 참조형( new int[5] )은 Heap영역에 만들어진다. 이때 score( 변수 )는 Stack영역에 만들어지는데 score는 Heap영역에 있는 것을 참조해서 사용한다. 그래서 참조형이라 한다. ---> 참조형은 다른 영역에서 만들어..

    [JAVA] 제어문( 조건문, 반복문 )

    * 지금까지 코드의 실행 흐름은 무조건 위에서 아래로 한 문장씩 순차적으로 진행되었지만, 때로는 조건에 따라 문장을 건너뛰고, 때로는 같은 문장을 반복해서 수행해야 할 때가 있다. 이처럼 프로그램의 흐름( flow )을 바꾸고 역할을 하는 문장들을 제어문이라고 한다. * 조건문은 조건에 따라 다른 문장이 수행되도록 하고, 반복문은 특정 문장들을 반복해서 수행한다. 1. 조건문 if( if, if-else, if-else if-else ), switch - 조건문은 조건식과 문장을 포함하는 블록 {}으로 구성되어 있으며, 연산 결과에 따라 실행할 문장이 달라져서 프로그램의 실행 흐름을 변경할 수 있다. - 조건문은 if문과 swith문 두 가지가 있으며 주로 if문이 많이 사용된다. if문 if문은 가장 ..

    [JAVA] 연산자( Operator )

    1. 연산자와 피연산자, 식( 표현식, expression ) 연산자란? 연산을 수행하는 기호를 의미 피연산자 연산자와 연산을 수행하려면 반드시 연산의 대상이 있어야 하는데 이를 피연산자라고 한다. 연산자 : 연산을 수행하는 기호( +, -, *, / ... ) 피연산자 : 연산자의 작업 대상 연산자는 피연산자로 연산을 수행하면 항상 결과값을 반환한다. 식( 표현식, expression ) 연사자와 피연산자를 조합하여 계산하고자 하는 바를 표현한 것을 식 또는 표현식이라고 한다. 2. 연산자의 종류 종류 연산자 설명 산술연산자 +, -, *, /, %, ( 비트 ) 사칙연산과 나머지 연산 관계(비교)연산자 >, =, 비교 > 논리 > 대입 순서로 진행, 대입은 제일 마지막에 실행 단항( 1 ) > 이항(..

    [JAVA] 입력메서드( Scanner ), 출력메서드( Print )

    1. 입력메서드( Scanner ) Scanner를 사용하기 위한 클래스 호출 사용하기 위한 객체 생성 메서드를 이용하여 입력하기 next()와 nextLine() 차이 next()는 공백을 기준으로 입력받는 것이다. nextLine()은 공백에 상관없이 입력을 다 받는 것이다. * nextLine() 앞에 nextLine()이 아닌 다른 입력이 있다면 의미없는 nextLine()을 하나 미리 써주어야 한다. 왜냐하면 앞에 있는 입력을 한 후 enter를 누르면 뒤에 있는 nextLine()이 그 엔터를 입력으로 받아서 뒤에 있는 nextLine()도 같이 종료되기 때문이다. 2. 출력메서드( Print ) 이스케이프 문자( escape character ) 영문자 이외의 tab이나 엔터 등의 특수문자를..