Language/Java 50

싱글톤

싱글톤이란? 생성자가 여러차례 호출되어도 실제로 생성되는 객체는 하나고 최초 생성 이후에 호출된 생성자는 최초에 생성한 객체를 리턴한다. 클래스의 인스턴스가 오직 1개만 생성되는 것을 보장하는 디자인 패턴이다. 싱글톤 구현 싱글톤 구현에서 주의 깊게 보여야 될 부분은 생성자를 Private로 생성하여, 다른 외부 클래스에서 싱글톤 클래스를 new로 구성하지 못하게 하는 부분이다. public class SingletonSErvice{ //1. static 영역에 객체를 딱 1개만 생성해둔다. private static final SingletonService instance = new SingletonService(); //2. public으로 열어서 객체 이스턴스가 필요하면 이 static 메서드를 통..

Language/Java 2021.09.19

오버로딩 vs 오버라이딩

오버로딩(Overloading) 같은 클래스 내에 여러개의 메소드 이름을 같이 쓸수가 있지만, 매개변수갯수가 달라야하고 타입이 달라야한다. public class OverloadingTest { public static void main(String[] args) { MyMath3 mm = new MyMath3(); System.out.println ("mm.add(3, 3) 결과:" + mm.add(3,3)); System.out.println ("mm.add(3L, 3) 결과:" + mm.add(3L,3)); System.out.println ("mm.add(3, 3L) 결과:" + mm.add(3,3L)); System.out.println ("mm.add(3L, 3L) 결과:" + mm.add(3..

Language/Java 2021.09.19

추상화

추상 클래스(abstract class) 미완성 설계도. 미완성 메서드를 갖고 있는 클래스 추상클래스로 인스턴스는 생성할 수 없다 추상클래스는 상속을 통해서 자손클래스에 의해서만 완성될 수 있다. 클래스 선언부의 abstact를 보고 이 클래스에는 추상메서드가 있으니 상속을 통해서 구현해주어야 한다는 것을 쉽게 알 수 있다 추상클래스는 추상메서드를 포함하고 있다는 것을 제외하고는 일반클래스와 전혀 다르지 않다. 추상클래스에도 생성자가 있으며, 멤버변수와 메서드도 가질 수 있다. /* 주석을 통해 어떤 기능을 수행할 목적으로 작성하였는지 설명한다 */ abstract 리턴타입 메서드이름(); //꼭 필요하지만 자손마다 다르게 구현될 것으로 예상되는 경우 abstract class Player{ // 추상클..

Language/Java 2021.09.19

다형성

다형성 여러 가지 형태를 가질 수 있는 능력 한 타입의 참조변수로 여러 타입의 객체를 참조 조상클래스 타입의 참조변수로 자손클래스의 인스턴스를 참조할 수 있도록 하는 것 조상 타입 참조 변수로 자손 타입 객체를 다루는것 Tv t = new Tv(); SmartTv() s = new SmartTv(); class Tv{ boolean power; // 전원상태 (on/off) int channel; // 채널 void power() { power = !power; } void channelUp() { ++channel; } void channelDown() { --channel; } class SmartTv extendsTv { String text; // 캡션(자막)을 보여 주기 위한 문자열 void c..

Language/Java 2021.09.19

상속, 패키지, 접근 제어자

상속 - 기존의 클래스로 새로운 클래스를 작성하는 것 - 두 클래스를 부모와 자식으로 관계를 맺어주는 것 상속의 특징 - 재사용성을 높이고 코드의 중복을 제거하여 프로그램의 생산성과 유지보수에 크게 기여한다 class Parent {} class Child extends Parent { // 자식 상속 부모 } 포함(Composite) - 작은 단위의 클래스를 만들고, 이 들을 조합해서 클래스를 만든다. class MyPoint{ int x; int y; } class Circle { //포함 MyPoint p = new MyPoint(); int r; } public class InheritanceTest { public static void main(String[] args) { Circle c = ..

Language/Java 2021.09.16

Static

Static이란? 시작과 동시에 Static영역에 저장된다. 공유할 변수, 메소드가 있을시에 static을 붙여서 사용하고 class같은 경우에는 내부클래스에서 사용이 된다. static을 호출할때는 class이름을 사용하여 호출해야한다. static영역같은 경우 프로그램이 종료하면 자동으로 소멸된다. 클래스 내부에서는 얼마든지 직접 접근이 가능하다 클래스 외부에서는 인스턴스의 이름이나 클래스의 이름을 통해 접근하는 것도 가능하다. Static 변수 사용 이유 인스턴스 간에 데이터 공유가 필요한 상황에서 static 변수를 선언한다. Static 메소드란? 인스턴스를 생성하지 않아도 static 메소드를 호출할 수 있다. 사용 이유는 객체를 생성할 필요가 없는 메소드에 붙인다. 인스턴스 변수에 접근하지 ..

Language/Java 2021.09.12

객체지향 언어

객체지향 언어 객체 지향에는 특징으로 4가지을 볼수가 있다. 1. 캡슐화 2. 상속 3. 추상화 4. 다형성 이 중에서 가장 중요시 여기고 있는것은 다형성이라 볼수있다. 객체지향언어의 장점 1. 코드의 재사용성이 높다 -새로운 코드를 작성할 때 기존의 코드를 이용하여 쉽게 작성할 수 있다. 2. 코드의 관리가 용이하다 - 코드간의 관계를 이용해서 적은 노력으로 쉽게 코드를 변경할 수 있다. 3. 신뢰성이 높은 프로그래밍을 가능하게 한다. - 제어자와 메서드를 이용해서 데이터를 보호하고 올바른 값을 유지하도록 하며, 코드의 중복을 제거하여 코드의 불일치로 인한 오동작을 방지할 수 있다. 클래스란? - 객체를 정의해놓은것 (처음 클래스을 배우는 사람은 설계도 또는 틀이라고 생각하면서 공부해보자) 클래스의 용..

Language/Java 2021.09.12

public static void main(String[] args)

Public(접근제어자) 접근제어자 → private →protected →pulibc → defualt 등이 있는데 public은 어느곳에서든 해당 객체를 참조할수있다는 의미이다. Static Static으로 함수 또는 클래스를 선언했을 경우에 해당 객체는 자바가 컴파일 되는 순간 정의가 된다. 그리고 이후 static이 아닌 객체가 정의가 된다. 따라서 일단 static 객체에서 static이 아닌 객체를 호출하는것은 불가능하다 void. 프로그램 자체가 종료되기 때문에, return값의 의미를 지닐수가 없다. 더쉽게 이해하자면 void자리에 int를 넣을경우 어떠한 처리를 실행한후 정수형 데이터를 돌려보내곘다는 뜻이며 String이 들ㅇ러갈경우 문자형데이터를 돌려보내겠다는 의미이다. 지금까지 정리을..

Language/Java 2021.09.07

final 클래스, 메소드, 변수

final 클래스 클래스를 final로 선언 시, 다른 클래스에서 확장해서 쓸 수 없다.(extends 할 수 없다) public final class FinalClass(){...} 접근제어자와 .class 사이에 추가한다. 더 이상 확장해서는 안되는 클래스에 사용한다. 누군가 이 클래스를 상속받아 내용을 변경하는 것을 방지한다. final 메소드 메소드를 final로 선언 시, 해당 메소드를 Overriding할 수 없다. public final void finalMethods(){....} 누군가 이 메소드를 오버라이딩해 덮어쓰는 것을 방지함 final 변수 1. 선언과 동시에 초기화를 해줄수있다 2. 생성자을 통하여 초기화를 해줄수가 있다. 변수를 final로 선언 시, 그 변수의 값을 바꿀 수 ..

Language/Java 2021.09.07

상수와 리터럴(constant & literal)

상수(Constant) 변수와 달리 한번 값을 저장하면 다른 값으로 변경할 수 없다. 상수를 선언하는 방법은 벼눗와 동일하며, 단지 변수의 타입 앞에 키워드 'final'을 붙여주기만 하면 된다. final int MAX_SPEED = 10; // 상수 MAX_SPEED를 선언 & 초기화 상수는 반드시 선언과 동시에 초기화해야 하며, 그 후 부터는 상수의 값을 변경하는 것이 허용되지 않는다. final int MAX_SPEED; // 에러. 상수는 선언과 동시에 초기화해야함 final int MAX_VALUE = 100; // OK. 선언과 동시에 초기화 했음 MAX_VALUE = 200; // 에러. 상수의 값은 변경될 수 없음 상수의 이름은 모두 대문자로 하는 것이 암묵적인 관례이며, 여러 단어로 이..

Language/Java 2021.09.06