Java 관련

    [Java] 추상클래스(abstract class)

    [Java] 추상클래스(abstract class)

    1. 추상메소드(abstract method) 추상 클래스를 알아보기 전에 추상메소드(abstract method)부터 알아보겠습니다. 추상메소드는 보디(body)가 없고 껍데기만 있는 메소드입니다. abstract 리턴타입 메소드명(); 위와 같이 선언만 되어있고 구현되지 않은 메소드입니다. 선언할 때 abstract 키워드를 사용합니다. 구현되어 있지 않기 때문에 {}를 사용할 필요 없이 세미콜론(;)으로 문장이 끝났습니다. 이런 추상메소드는 상속받는 자식 클래스에서 반드시 구현이 되어야 합니다. 즉, 오버라이딩되어야만 사용할 수 있는 메소드입니다. 만약 자식 클래스에서도 구현되지 않았다면 그 자식의 자식 클래스에서 구현이 되어야 하겠네요. 공통적인 부분은 미리 만들어진 것을 사용하지만 상속받아 사용..

    [Java] 상속과 다형성

    [Java] 상속과 다형성

    AAA.java package com.aaa; public class AAA { private int abc; public AAA() { System.out.println("AAA 생성"); } public AAA(int abc) { //this : 나(객체) this.abc = abc; System.out.println("AAA 생성 -> abc : " + abc); } public int getAbc() { return abc; } public void setAbc(int abc) { this.abc = abc; } public void prn() { System.out.println("AAA의 prn() 메소드"); } } ​ BBB.java package com.bbb; import com.aaa..

    [Java] 다형성(polymorphism)

    [Java] 다형성(polymorphism)

    다형성 다형성은 하나의 객체가 여러 가지 타입을 가질 수 있는 것을 말합니다. 부모 클래스 타입의 참조 변수로 자식 클래스 타입의 인스턴스를 참조할 수 있도록 할 수 있습니다. 부모 타입 형태로 자식 객체의 행위를 하는 것이죠. 오버라이드랑 매우 비슷한 특징을 가지고 있습니다. 다형성의 특징은 다음과 같습니다. ​ 1. 부모의 타입으로 자식 생성 Parent p = new Child(); 2. 부모의 이름으로 자식 대입 Child c = new Child(); Parent p = c; 3. 부모의 매소드를 통해 자식의 매소드 호출 같은 부모를 상속받은 자식 클래스는, 컴파일 시 형 변환 가능한 것처럼 작성되지만, 실행시(runtime)시 ClassCastException을 발생시킴. ​ 다형성은 이와 같..

    [Java] 상속(inheritance)

    [Java] 상속(inheritance)

    자바는 객체지향프로그래밍(OOP)라고 했습니다. 이런 객체지향언어의 대표 특징 4가지가 있는데 그중 2가지가 다형성과, 상속이고 나머지 2가지는 추상화와 캡슐화입니다. 이번 포스팅에서는 그 중 상속에 대해 중점으로 보면서 다형성도 같이 알아보겠습니다! ​ 1. 상속 상속이란 클래스에 다른 클래스의 기능을 추가하거나 재정의 하는 것을 말합니다. 상속으로 다른 클래스에 있는 메소드와 필드를 물려받아 사용하게 되는 클래스를 만들 수 있게 됩니다. 이런 기존의 클래스 상속해 주는 클래스를 부모클래스, 슈퍼(super)클래스, 상위클래스, 기초클래스라고 하며 상속받는 클래스를 자식클래스, 하위클래, 파생클래스라고 부릅니다. 또한 상속을 위한 키워드는 extends입니다. 자식클래스와 부모클래스를 벤다이어그램으로 ..

    [Java] 오버로딩(Overloading), 오버라이딩(Overriding)

    [Java] 오버로딩(Overloading), 오버라이딩(Overriding)

    1. 오버로딩(Overloading) 오버로딩(overloading)은 같은 이름의 메소드를 중복하여 정의하는 것입니다. 오버로딩을 사용하여 메소드에 사용되는 이름을 절약할 수 있으며 오버로딩을 이용해 메소드를 만들어 놓으면 메소드를 호출할 때 전달해야 할 매개변수의 타입이나 개수에 대해 신경을 쓰지 않고 호출할 수 있게 됩니다. 오버로딩은 객체 지향 프로그래밍의 특징 중 하나인 다형성(polymorphism)을 구현하는 방법입니다. 이런 오버로딩에도 충족해야 하는 조건이 있습니다. 1. 메소드의 이름이 같아야 합니다. 2. 매개변수의 개수나 타입이 달라야 합니다. ​ ​ MySum.java package com.test01; public class MySum { public int sum(int i) ..

    [Java] 클래스(class)

    [Java] 클래스(class)

    1. 클래스(class)란? 자바는 객체 지향 프로그래밍(Object Oriented Programming : OOP) 언어입니다. 객체지향언어에서는 모든 데이터를 객체(object)로 취급하고 객체가 프로그래밍의 중심이 되어야 합니다. 객체란 일상에서 볼 수 있는 사물로 설명할 수 있습니다. 사물의 상태와 행동처럼 객체를 구체화하는 형태의 언어라고 볼 수 있습니다. 여기서 클래스란 이런 객체를 만들어 내기 위한 설계도와 같다고 볼 수 있습니다. 게임으로 예를 들어보면 스타크래프트에 배럭이라는 건물을 보시면 유닛을 찍어내는 버튼이 있습니다. 이 버튼이 마린을 생산해낼 수 있는 설계도입니다. 이 생산 버튼을 통해 마린(객체)를 많이 생산합니다. 자바도 마찬가지로 이런 설계도인 클래스를 이용해 여러 객체를 ..

    [Java] java.lang.String api 활용하기

    [Java] java.lang.String api 활용하기

    https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html String (Java SE 11 & JDK 11 ) Compares two strings lexicographically. The comparison is based on the Unicode value of each character in the strings. The character sequence represented by this String object is compared lexicographically to the character sequence represented by the argum docs.oracle.com ​ 위의 링크에서 AP..

    [Java] Split() & StringTokenizer()

    [Java] Split() & StringTokenizer()

    우선 Spilt과 StringTokenizer의 차이점부터 보면 StringTokenizer의 경우 비어있는 데이터는 생략하고 Split은 비어있는 데이터를 null 값으로 간주한다고 합니다. 또한 StringTokenizer는 일반적으로 속도가 더 빠르며 Split은 정교한 작업을 하는데 더 유용하다고 합니다. 두 가지를 보기 전에 먼저 substring을 보겠습니다. ​ ​ 1.substring String str = "The String class represents character strings."; str의 문자열이 선언되어 있다고 가정했을 때 System.out.println(str.substring(4, 10)); substring은 java.lang.String에서 제공하고 있는데요. 위..

    [Java] String() & StingBuffer()

    [Java] String() & StingBuffer()

    우선 String은 불변성(immutable)의 특성이 있다고 말씀드렸었습니다. 이 말이 무슨 말일까요?? System.out.println(s.hashCode()); s += " 저는 "; System.out.println(s.hashCode()); s += "씨네 입니다."; System.out.println(s.hashCode()); System.out.println(s); String t = "안녕하세요. 저는 씨네 입니다"; System.out.println(s == t); System.out.println(t.hashCode()); ​ String s = "안녕하세요."; System.out.println(s.hashCode()); s += " 저는 "; System.out.println(s...

    [Java] String pool(스프링 풀)

    [Java] String pool(스프링 풀)

    String은 참조 타입이지만 기본 타입처럼 쓸 수 있는 문자열이라고 다룬 적이 있습니다. 이런 문자열 String은 불변성(immutable)을 가지고 있습니다. 또 String 타입과 다른 타입을 연산하면 다른 타입도 String 타입으로 인식하게 되는데요. 이게 무슨 말인지 잠시 코드를 볼까요? String s = "Hello"; System.out.println(s + 1 + 2); System.out.println(1 + 2 + s); System.out.println(s); String h = "Hello"; System.out.println(h); System.out.println(s == h); String newS = new String("Hello"); System.out.println..