이 블로그의 인기 게시물
다형성 추가정리, instanceof
public class Blog { public static void main(String[] args) { new Byul(); } } class Byul { Byul() { main(); } void main() { //1. 왜 부모 타입으로 선언하고 자식 타입으로 생성하는게 선호되는가? Animal cat = new Cat(); Cat cat2 = new Cat(); //답: 데이터 타입이 다르면 관리하기가 불편하다. // 예를 들어서, 한 배열에 담을 수가 없다. Animal cat3 = new Cat(); Animal dog = new Dog(); Animal[] animals = {cat3, dog}; //이런식으로 부모타입으로 선언하면 한 배열에 묶는 등, 관리가 편해진다. //2. 다형성 예시--------------------------------------------- Animal[] animals2 = { new Cat(), new Dog(), new MikeNeko(), new Shitzu(), new Animal() }; for (Animal animal : animals2) { animal.makeSound(); } System.out.println("---------------"); // 같은 함수, 같은 데이터 타입인데, 자식 클래스가 달라서 다양한 결과를 보여 줄 수 있다. //3. instanceOf--------------------------------------------- // 객체가 해당 객체 타입인지 확인 (상속 관계), // 에러 없이 캐스팅 가능한지 확인 (부모는 자식, 자식은 부모, 메모리에 올라갔는지) // instanceCheck 함수 // - 다형성의 원리를 설명한다. // - 받아오는 객체의 instance 상태에 ...
단체 채팅 구현
import java.io.DataInputStream; import java.io.DataOutputStream; import java.net.ServerSocket; import java.net.Socket; import java.util.LinkedList; import java.util.List; public class Server { static List<DataOutputStream> outs; public static void main(String[] args) { try { ServerSocket serverSocket = new ServerSocket(2400); outs = new LinkedList(); Socket socket; DataOutputStream out; while (true) { socket = serverSocket.accept(); new Broadcaster(new DataInputStream(socket.getInputStream()), out = new DataOutputStream(socket.getOutputStream())).start(); outs.add(out); } } catch (Exception e) { e.printStackTrace(); } } static class Broadcaster extends Thread { DataInputStream in; DataOutputStream out; Broadcaster(DataInputStream in, DataOutputStream out) { this.in = in; this.out = out; } @Override public void run() { while (true) { try { String message = in.readUTF(); for (DataOutputStream ou...
댓글
댓글 쓰기