본문 바로가기

Java

[Java] 싱글톤 (Singleton) 객체를 여러개 찍어내더라도객체가 유일한 객체이고 싶게 하려면 어떻게 할까요?이름이 다른 객체를 2개 생성하고주소값을 출력해보면 서로 다른 것을 확인할 수 있습니다. Puft p = new Puft("김래현", 26, "puft");Puft p2 = new Puft("김래현", 26, "puft"); -----------------------------------------------------com.puft.dec135.main.Puft@139a55com.puft.dec135.main.Puft@1db9742 여기서는 싱글톤 패턴을 이용하면 되는데요.싱글톤 패턴이란클래스가 최초 한번만 메모리를 할당하고 (static)그 메모리에 객체를 만들어서 사용하는 디자인 패턴입니다.고정된 메모리 영역을 얻으면서 한번.. 더보기
[Java] 다형성(Polymorphism) 다형성이란 여러 형태를 가질 수 있는 능력을 말합니다.자바에서 다형성은 이름의 메소드나 객체가 다양한 방식으로 동작하는 특성을 말합니다.다형성이라는 특징을 사용하면상위타입 변수에 하위타입 객체를 담는 것이 가능합니다. 같은 형태이지만 다른 기능을 할 수 있게됩니다.이는 Overriding과 밀접한 관련이 있습니다. 예를들어Avengers 타입의 변수에 Ironman 객체를 담을 수 있는데 Ironman i = new Ironman("a", 123,123123); Avengers a = new Ironman("b", 123 ,1231323);이렇게 상위 클래스 타입에  하위 클래스 타입의객체를 참조하게 되면상위 클래스에서 하위클래스의 멤버 변수나메소드도 접근할 수 있게됩니다.즉, 코드의 유연성과 확장성이 .. 더보기
[Java] 추상화 (abstract) 추상화는 공통의 속성이나 기능을 묶어서 이름을 붙이는 것입니다.abstract메소드는 미완성 메소드인데하위클래스에서 반드시 오버라이딩 해야합니다.abstract메소드가 하나 이상 있으면해당 클래스는  추상클래스나 interface로 활용되어야 합니다.추상 클래스는 사용할 클래스들의 공통적인 속성,기능들을 추출해어느정도 규격을 잡아놓은 추상적인 클래스입니다. public abstract void roar(); 상위 클래스에서 추상메소들 구현해놓으면 public class Bird extends Animal { private int leg;public Bird(String sort, int age, int leg) { super(sort, age); this.leg = leg;}@Override public.. 더보기
[Java] 캡슐화(Encapsulation) 캡슐화는 멤버변수에 접근할 수 있는 '통로'를 만들고그 통로에 안전장치를 하는 개념입니다.즉 외부에 노출할 필요가 없는 정보들을캡슐처럼 감싸서 '은닉'하는 기능이라고 할 수 있습니다.멤버변수를 외부에서 직접 건드릴 수 없도록 'private'를 걸어놓음으로써캡슐화를 할 수 있습니다.그러면 private 변수를 외부에 출력하거나 리턴은 어떻게할까요?바로 getter와 setter기능을 이용해서 하면 됩니다.getter와 setter 기능을 단축키를 심어서사용하면 편리한데요.단축키를 심는 과정입니다. 메뉴 - Window - Preferences - 왼쪽 상단에 'keys' 검색- 화면 바뀌면 - 중앙 검색란에 'generate'를 검색 - Generate Getters and Setters 선택- 원하는 .. 더보기
[Java] 접근 제어자(Access Modifier) 접근 제어자(Access Modifer)는 외부에서(멤버변수, 클래스 등에)접근하지 못하도록 제한하는 역할을 합니다.접근제어자가 사용될 수 있는 곳은 클래스, 멤버변수, 메서드, 생성자입니다. 종류는 4가지가 있습니다.private - 같은 클래스 내에서만 접근이 가능하다.default - 같은 클래스나 같은 패키지에서 접근 가능하다. (접근 제어자를 쓰지 않은 상태)protected - 같은 패키지나 다른 패키지라면 그 하위 클래스에서 접근이 가능하다.public - 접근 제한이 없음. 접근 범위를 표현하면 private 이렇습니다. 실습을 통해 확인해보겠습니다.package com.puft.dec123.main;public class Dog { public int a; protected int b; .. 더보기
[Java] 상속(Inheritance) A is B는 A는 B이다라는 뜻입니다.자바에서는 A is B라는 개념이 상속으로 쓰인다고 보시면 됩니다.클래스에서 다른 클래스로상속을 할 수 있습니다.extends라는 키워드를 사용하면해당 클래스의 모든 기능을 상속 받아 사용할 수 있습니다. 예를 들어 동물의 나이와 종류를 표현하는 클래스가 있다고 가정했을 때public class Animal { String sort; int age;public Animal() { // TODO Auto-generated constructor stub}public Animal(String sort, int age) { super(); this.sort = sort; this.age = age;}public void printAnimal() { System.out.pr.. 더보기
[Java] A has B 객체간의 관계에는has와 is가 있습니다.has에 대해 먼저 알아볼까합니다.A has B는 A가 B를 가지고 있다라는 뜻입니다.B has A는 B가 A를 가지고 있다는 뜻이죠.객체도 객체를 소유할 수 있는데요.예를들어 candy라는 클래스가 있고company라는 클래스가 있을 때사탕에대한 정보를 가지고 있는 회사 클래스를 만들 수 있고회사에 대한 정보를 가지고 있는 사탕 클래스를 만들수도 있습니다.개발자가 정하기 나름입니다. 이해하기 쉽도록 구현 방법을 알아볼까요? 식당 클래스가 있고 해당 클래스에는식당 이름, 식당 주인 이름, 식당 위치, 식당 전화번호 정보가 있습니다.그리고 사람 클래스에는 식당 주인에 대한 이름, 성별 , 전화번호가 있습니다.식당클래스에서 식당 주인에 대한 정보를사람클래스에서 받아오.. 더보기
[Java] 생성자 생성자(Constructor)객체가 만들어질때 사전 작업이 하나 필요한데바로 생성자를 만드는 작업입니다.생성자는 리턴이 아예 없고, 메소드명이 클래스명과 같은 메소드입니다. 생성자를 만들지 않으면 자바 컴파일러가 기본 생성자를만들어버립니다.반대로 기본 생성자를 건드리면 자바 컴파일러가 기본 생성자를안만들어줍니다.시스템이 자동으로 객체를 만들때가 있는데이때는 기본 생성자를 사용합니다.흔히 객체를 생성할 때shoes s = new shoes();이렇게 생성하는데이떄 new shoes(); 부분이 기본 생성자를 뜻합니다.생성자를 오버로딩 하는 것도 가능합니다.오버로딩된 생성자는 단축키를 설정해서 사용할 수 있는데저 같은 경우는  the selected type contains no field which may.. 더보기