728x90 반응형 2022-2/자바24 [자바] 인터페이스 interface I{ public void m(); } class A implements I{ public void m(){ //m메소드 구현 } } 인터페이스 I가 있다. 인터페이스에는 몸통이 구현되지 않은 메소드 m이 있다. class A implements I라고 되어있다. 클래스A는 인터페이스I의 모든 메소드를 구현해야한다는 말이다. 만약 구현하지 않으면 컴파일조차 되지 않는다. implements I는 결국 class가 I의 메소드를 구현해야만 하도록 제한하는 것이다. 인터페이스는 어떤 클래스가 어떤 메소드를 가지는지 명세해주는 역할을 한다. abstract class는 본체가 있는 메소드, 본체가 없는 abstract메소드를 모두 가질 수 있지만 interface class 는 본체가 없는 .. 2022. 12. 18. [자바] 스레드와 멀티태스킹 자바에서 스레드 만들기 java.lang.Thread 클래스를 이용하는 방법 java.lang.Runnable 인터페이스를 이용하는 방법 Thread 클래스를 이용한 스레드 생성 class MyThread extends Thread{ @Override public void run(){ ...//run 오버라이딩 } } run()메소드를 스레드 코드라고 부름. run()메소드에서 스레드 실행 시작 MyThread mythread= new MyThread(); mythread.start(); 스레드 객체를 생성하고, start() 메소드를 호출하여 스레드를 시작할 수 있다. Runnable 인터페이스로 스레드 만들기 class MyThread implements Runnable{ @Override publi.. 2022. 12. 18. [자바] 제네릭과 컬렉션 컬렉션(collection) 요소(element) 객체들의 저장소 고정 크기의 배열을 다루는 어려움 해소 다양한 객체들의 삽입,삭제,검색 등의 관리 용이 컬렉션은 제네릭 기법으로 구현된다. 컬렉션의 요소는 객체만 가능하다 (int,char,double과 같은 기본 타입이 아니라 Integer,String같은 객체를 사용하여야 함) 오늘 알아볼 것들 Vector ArrayList LinkedList Iterator HashMap Collections 제네릭 클래스 만들기 Vector java.util.Vector Vector 클래스의 주요 메소드 boolean add(E element) : 맨 뒤에 element 추가 void add(int index, E element): index 위치에 element.. 2022. 12. 18. [자바] 네트워크 서버 코드 package networkEx; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; public class ServerEx { public static void main(String[] args) { try { ServerSocket ss=new ServerSocket(8888); Socket server=ss.accept(); InputStream in =server.getInputStream(); OutputStream out = server.getOutputStream(); byte[] arr.. 2022. 12. 17. [자바] ArrayList<클래스> 형의 정렬방법 일반적으로는 collections.sort(arraylist)를 하면 되지만 어레이리스트가 어떠한 클래스 객체를 담는다면.. 정렬을 어떻게 해야할까? Collections.sort에서 자동완성을 시켜보면 sort(List list)가 있고 sort(List list, Comparator 2022. 12. 12. [자바] 멀티스레드, synchronized MultiThread program 작성 방법 Thread class 이용 Runnable interface 이용 Thread class 상속받는 방법 public class DigitThread extends Thread { public void run() {//Thread.run 오버라이딩 for (int count = 0; count < 10; count++) { System.out.println(count); try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } thread로 실행할 클래스를 선언한다.(Thread class 상속.. 2022. 12. 1. [자바] Vector 벡터 생성하기 Vector vc = new Vector(); Vector v = new Vector(); //타입을 지정하지 않으면 Object타입으로 설정 import java.util.Vector; class Point{ int x,y; public Point(int x, int y) { this.x = x; this.y = y; } public String toString() { return getClass().getName() +"("+x+","+y+")"; } } public class PointVectorExam { public static void main(String[] args) { Vector pointV=new Vector(); pointV.add(new Point(1,2)); poi.. 2022. 12. 1. 자바 Exception/Generic <T> Exception import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; public class ExceptExam08 { public static void main(String[] args) { try { FileReader rd = new FileReader("some.txt"); } catch(FileNotFoundException e) { System.err.println("파일이 없다"); } catch (IOException e) { System.err.println("입출력 에러 발생"); } } } catch문을 여러 개 달 수도 있다. 여기서 IOException이 FileNot.. 2022. 11. 24. package 더보기 Circle class package geometry; class Circle{ int radius; static final double PI=3.14; Circle(int radius) { this.radius=radius; } double getArea(){ return radius*radius*PI; } } package geometry;로 패키지를 지정해두었다. 컴파일을 한다. 현재폴더 안에 geometry 폴더가 생겼다. geometry폴더 안에 Circle.class파일이 생겼다. Rectangle.java파일 package geometry.polygon; class Rectangle { int width; int height; Rectangle(int width,int height) .. 2022. 11. 15. interface/Object class/Wrapper class/System class 자바는 다중상속이 불가능하다(부모가 여럿인거 불가) interface가 있다. public interface Lendable { //public abstract가 생략됨 abstract void checkOut(String borrower, String date); void checkIn(); } static 상수 혹은 추상메소드만 가질 수 있으며, 접근지정자는 public 고정이다. public abstract는 생략가능하다. public class SeparateVolume implements Lendable { public void checkOut(String borrower, String date) { ... } } implements 인터페이스명 으로 받은 후 메소드를 구체화해야한다. (오버라이.. 2022. 11. 8. 추상화 클래스, 추상화 메소드, 다형성 추상화 클래스 MsgSender abstract public class MsgSender { String title; String senderName; public MsgSender(String title,String senderName) { this.title=title; this.senderName=senderName; } abstract void sendMsg(String recipnt); } 추상화클래스 MsgSender을 상속받는 이메일 클래스 public class EmailSend extends MsgSender { String sendAddr; String emailBody; public EmailSend(String title, String senderName,String sendAddr.. 2022. 11. 3. 입출력,버퍼,파일입출력 문자 입출력하기 import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; public class InputStreamEx01 { public static void main(String[] args) { InputStream in = System.in; OutputStream out = System.out; try { int inputChar = in.read(); out.write(inputChar); out.flush(); out.close(); in.close(); }catch(IOException e) { e.printStackTrace(); } } } 문자를 하나씩 처리한다. (read 시 하나의 문자만.. 2022. 11. 1. 상속,오버라이딩,super(),final,abstract Account 클래스를 상속받는 CheckAccount클래스의 생성자 public CheckAccount(String accountNum,String name,int balance,String cardNo) { //super() 생략됨. Account()이 없으면 에러 super(accountNum,name,balance);//이렇게 사용가능 this.cardNo=cardNo; } 상속받은 클래스의 생성자에서는 super()이 자동으로 실행됨. (부모클래스의 기본생성자가 없는 경우 에러가 발생함) super()에 인자를 넣어서 사용할 수도 있다. 메소드 오버라이딩 void deposit(int amnt) { this.balance += amnt; System.out.println(name+"님 게좌에"+.. 2022. 11. 1. 자바 중간고사 01- 자바 소개 자바는 범용언어이며 특히 network환경에 강한 특징을 가지고 있다. 자바는 C++의 preprocessor, pointer, 다중상속, 구조체, 전역변수, goto문, 연산자 중복 등의 기능을 제외하여 언어의 복잡성을 제거함 automatic garbage collection 기능을 제공함 객체지향 객체지향은 우리의 실 세계와 유사한 프로그램 방식이다. 자바는 Object - Oriented language이다. 자바 프로그램의 모든 요소들은 object(객체)로 표현된다. 객체지향은 소프트웨어의 재사용과 정보의 캡슐화같은 많은 장점을 제공한다. object 속성을 나타내는 데이터, 데이터를 변경하거나 조작할 수 있는 메소드(method)로 구성 Class object는 항상 cla.. 2022. 10. 26. Object, String, StringBuffer Object클래스 java.lang 패키지에 포함되어 있다. 모든 클래스의 수퍼 클래스이다. -모든 클래스에 강제 상속 -모든 객체가 공통으로 가지는 객체의 속성을 나타내는 메소드 보유 Object클래스의 주요 메소드 boolean equals(Object obj) : obj가 가리키는 객체와 현재 객체를 비교하여 같으면 true 리턴 Class getClass() : 현 객체의 런타임 클래스 리턴 String toString() : 현 객체에 대한 문자열 표현을 리턴 toString() Point p = new Point(2,3); System.out.println(p); Point 클래스의 객체 p가 있고, p를 출력하게 되면 p는 자동으로 p.toString()으로 변환되어 출력된다. toStrin.. 2022. 10. 21. Exception 수식 계산할 때 0으로 나누면 오류가 발생한다. public class Numbers { double tot,avg; int arr[]; Numbers(int[] nums){ this.arr = nums; } double getTot() { for(int i=0;i=0) { this.balance -= amnt; System.out.println(name+"님 계좌에서 "+amnt+"인출완료"); return amnt; } else { throw new Exception("잔액 부족!!!"); } } void printInfo() { System.out.println("*************info************"); System.out.println("계좌번호: "+accountNum); Sy.. 2022. 10. 20. 3. 객체지향 객체지향 Software module의 재사용과 독립성을 강조 프로그램 모듈을 재사용할 수 있음. 프로그램의 확장 및 유지보수가 용이하다. object의 구성 속성을 나타내는 data 데이터를 변경하거너ㅏ 조작할 수있는 method로 구성 object는 항상 class로부터 생성된다. 정보처리의 주체는 class가 아니라 object이다. 내가 이걸 ppt보면서 정리하는게 의미가있나;; 2022. 10. 20. 오버로딩 생성자 오버로딩 클래스에 하나 이상의 생성자를 중첩하여 사용할 수 있다. 생성자의 이름은 같지만 매개변수의 타입과 개수는 달라야 한다. class Box{ int w; int h; int d; public Box(){ w=1; h=1; d=1; } public Box(int w){ w=w; h=1; d=1;} } 이런식으로 이름이 같은 생성자를 만들 수 있다는 것임. 오버라이딩 부모 클래스에서 선언된 메소드를 자식클래스에서 재정의함 (다형성) 2022. 10. 20. 객체와 클래스 생성자 생성자가 선언되지 않은 경우에는 기본 생성자를 컴파일러가 자동으로 만들어 줌. (하나라도 생성자가 선언된 경우는 기본생성자가 생기지않음) this 클래스 내에서 메소드 작성할 때 인자로 받는 변수이름과 클래스 멤버변수의 변수명이 같을 때 멤버변수를 this.변수명 으로 써서 구별함. 소멸자 자바에서는 가비지컬렉터가 있어 소멸자가 없음 this() 같은 클래스 내의 다른 생성자 호출 class Box{ int width; int height; int depth; public Box(){ width=1; height=1; depth=1; } public Box(int w){ width = w; height =1; depth = 1;} public Box(int w, int h, int d){ widt.. 2022. 10. 11. 3장 클래스,캡슐화, 다형성 class는 데이터 + 메소드의 수행까지 포함됨 main() 메소드는 JAP에 반드시 있어야 하는 특수한 메소드. 프로그램 실행 시 자동으로 실행되는 메소드. main()메소드는 String의 array를 argument로 받는다 (명령행 매개변수) args[0] 요런식 (String이기때문에 필요 시 변환해야함. ex: Integer.parseInt(args[0])) 캡슐화 Object를 작성할 때 숨겨야 하는 정보(private)와 공개해야 하는 정보(public)를 구분하여 작성. Object의 사용자는 기능만 알고 사용하며 어떻게 처리되는지는 은폐된다 (캡슐화) 캡슐화의 장점: object에 포함된 정보의 손상과 오용을 막을 수 있다. object 조작 방법이 바뀌어도 사용 방법은 바뀌지 않는다... 2022. 10. 9. 이전 1 2 다음 728x90 반응형