자바26 Java :: 내부클래스 (inner class) 내부 클래스 (ineer class) 클래스 내부에 클래스를 선언하여 외부 클래스의 필드 접근에 용이하기 위함 내부 클래스의 필드를 사용하기 위해서는 외부 클래스에서 내부 클래스를 객체화 해야 한다 외부클래스명 객체명 = new 외부클래스 생성자(); 외부클래스명.내부클래스명 객체명 = 외부클래스객체명.new 내부클래스 생성자(); [내부 클래스를 사용하는 이유] -캡슐화 A클래스에서 b라는 작업이 자주 쓰이고, 이 작업은 B클래스를 만들어야 쉽게 관리할 수 있음 하지만 다른 클래스에서 b작업이 필요없거나, B클래스를 외부에 노출시키고 싶지 않을 때 사용한다 내부 클래스는 GUI(Graphic User Interface) 개발시 많이 사용 된다 예를들어 a라는 버튼과 b라는 버튼이 있다면, 두 버튼의 기.. 2022. 7. 16. Java :: 인터페이스 인터페이스 추상 클래스를 고도화 시킨 문법이며, 반드시 추상 메서드와 상수만 선언해야 한다 다른 클래스에서 인터페이스를 지정할 때에는 implements 를 사용한다 (자바에서는 다중상속이 안된다) 지정된 인터페이스가 가지고 있는 추상 메서드들을 반드시 재정의 해야한다 군인 프로그램 package day20; public interface Soldier { int arms=2; final static int legs=2; abstract void eat(); //미구현 된 추상메서드 void work(); void play(); void sleep(); void salute(); } package day20; public class Private implements Soldier{ @Override pu.. 2022. 7. 3. [Java] TMS 대중교통 터미널 시스템 만들기 인터넷 강의 정리용 public.java package tms; //pay() : 요금을 정산할 수 있는 메서드 //showDestMsg(String destination) : 도착시 "도착지에 도착했습니다" 메세지 출력하는 메서드 //자식클래스 : 버스, 지하철 //view //이용하실 대중 교통을 선택하세요 //출발지는 랜덤 //도착지는 버튼으로 구현 (optionDialog()) //출발지와 도착지가 같지 않도록 구현 //버스는 정방향만 가능 //지하철은 역방향도 가능 //교대 > 강남 > 역삼 > 선릉 public abstract class Public { String[] arStation = {"교대", "강남", "역삼", "선릉"}; //추상 메서드로 만든 이유: 대중교통이라면 무조건 이 두.. 2022. 6. 17. Java 추상 클래스 추상 클래스(불완전한 클래스) 추상적인 내용만 정의하고 있는 클래스로 구체적인 내용은 하위 클래스에서 구현되도록 해놓은 클래스 추상클래스는(부모) 클래스들의(자식) 공통요소들을 가상화 시켜놓는다 객체화는 가능하나 잘 사용하지 않는다(목적에 어긋난다) 부모 추상클래스의 역할은 단지 자식 클래스를 만들 때 도와주는 역할을 수행하기 위해 존재한다(다형성) 자식클래스에서 재정의할 메서드의 이름만 가지고 있다 즉, {} 바디를 가지지 않는다 그 메서드를 추상 메서드라고 하며, abstract 키워드가 앞에 붙는다 하지만 일반 메서드도 선언 가능하다 abstract 추상클래스명{ abstract 추상 메서드(); } 추상 메서드는 자식 클래스에서 강제적으로 반드시 재정의 해야 한다 강제성을 부여한다 package .. 2022. 6. 12. Java :: 다형성/ 싱글턴 패턴 싱글턴 패턴(Singleton pattern) 객체가 단 1개만 존재할 때 외부에서 new를 하지 못하게 막아주고 클래스 내부에서 new를 한 후 외부에서 선언이 아닌 사용만 해준다 try { Thread.sleep(500); } catch (InterruptedException e) {} } // 단축키: 영역 드래그 후 alt + shift + z => try cat 선택 스레드 try catch (랜덤 값이 차례대로 0.5초에 하나씩 출력된다) package single; public class IronMan { //싱글턴패턴은 new를 하면 안되기 때문에 생성자를 private으로 막아준다. 객체를 더이상 만들수 없게끔 private IronMan() {} //외부에서 클래스로 직접 접근할 때는 .. 2022. 6. 12. Java Casting/instance of [up casting] 부모클래스 타입으로 자식 생성자를 호출하는 것 부모클래스명 객체 = new 자식 생성자(); 부모 안에 자식을 담는 것 부모와 자식간의 공통 요소(재정의 메서드)만 사용 가능하며 자식 클래스의 추가 된 것들은 사용할 수 없다 부모타입으로 선언 되었기 때문에 부모필드만 사용 가능하지만, 자식 클래스에서 재정의 했다면 재정의 된 메서드로 사용된다 [down casting] 자식 클래스 타입으로 부모 생성자를 호출하는 오류 부모의 범위가 더 크기 때문에 자식에 담을 수 없다 package day18; class Car{ String brand; String color; int price; public Car() { } public Car(String brand, String color,.. 2022. 6. 11. Java 클래스 배열 클래스 배열 객체를 여러개 선언해야 하는 경우 배열 타입으로 한번에 선언 후 사용한다 클래스 배열 선언 1. 클래스명[] 배열명 = new 클래스명[길이]; //자동 초기화 2. 클래스명[] 배열명 = { new 클래스명(), new 클래스명(), ... } 클래스 배열 사용 배열명[index].변수명 배열명[index].메서드명 package day17; import java.util.Scanner; class Animal{ String name; int age; String feed; public Animal() { } public Animal(String name, int age, String feed) { this.name = name; this.age = age; this.feed = feed;.. 2022. 6. 11. Java 상속 package day17; import java.util.Random; class Person{ String name; int age; String gender; int money; public Person() { } public Person(String name, int age,String gender, int money) { this.name = name; this.age = age; this.gender = gender; this.money=money; } } //Person을 상속 받은 Teacher class Teacher extends Person{ String subject; String position; int cnt=0; //강의 10개 할 때 마다 월급 올라가도록 cnt private .. 2022. 6. 11. 상속 / 다형성 package day16; class A{ int data=10; public A() { System.out.println("부모 클래스 생성자"); } void show() { System.out.println("A 클래스"); } } class B extends A{ void check() { show(); //부모 클래스 상속해서 사용하기 } } public class InhTest { public static void main(String[] args) { B instance =new B(); //B 타입의 객체 만들기 instance.check(); } } 부모 클래스 생성자 A 클래스 show();만 호출 했는데 "부모 클래스 생성자" 가 출력 되는 이유? B instance =new B();.. 2022. 6. 7. 지역변수/전역변수/static변수 [지역변수 stack영역] 지역 안에서 선언된 변수 그 영역의 닫는 중괄호 } 를 만났을 때 메모리에서 해제 된다 사용자가 직접 초기화 해야 한다 다른 영역에서 접근할 수 없기 때문에 보안성이 뛰어나다 [전역변수 data영역] 클래스 영역 안에 있고 전체 영역에서 사용 가능한 변수 클래스 영역 외의 어떠한 영역에도 포함되어 있지 않다 new를 만났을 때 초기화 된다 프로그램 종료시 메모리에서 해제 된다 다른 영역에서도 접근할 수 있기 때문에 보안성이 상대적으로 낮다 *new를 만나도 초기화 되지 않게 하려면 static을 붙여 주면 된다 [static변수 data영역] 컴파일을 하게 되면 가장 먼저 메모리에 올라가고 어떠한 경우에도 초기화가 되지 않는다 단, 프로그램 종료시 메모리에서 해제 된다 메모리에.. 2022. 6. 6. 이전 1 2 3 다음