Computer Language/JAVA

스레드란 일반적인 자바 프로그램을 실행하면 작성한 코드가 위에서부터 아래로 순차적으로 실행합니다. 이러한 흐름을 하나의 스레드라고 표현합니다. 따라서 자바를 실행하면 "하나의 스레드가 실행되었다." 라고 표현할 수 있습니다. 그러나 대규모 프로그램의 경우 하나의 스레드로만 구현할 수 없는 경우가 많이 있습니다. 이런경우 다중스레드로 구현하면 각각의 스레드가 동시에 수행되면서 프로그램을 병렬처리 할 수 있습니다. 스레드 기동 스레드를 기동하기 위해서는 먼저 클래스 라이브러리의 Thread 클래스를 상속받아야 합니다. 상속받은 자식클래스는 반드시 run( ) 메소드를 작성해야 합니다. run( ) 안에 작성된 코드는 일반적인 흐름과 달리 병렬로 동작하며 run ( ) 메소드가 시작점이 됩니다. 1 2 3 4..
자바 예외의 원리 프로그램 실행 시 아래와 같은 다양한 오류가 발생할 수 있습니다. - 파일을 읽는 프로그램을 실행시켰으나 파일을 찾을 수 없는 경우 - 문자열을 숫자로 변환하는 프로그램을 실행했으나 숫자로 변환할 수 없는 문자열인 경우 - 배열의 범위를 벗어나는 경우 이러한 오류들은 코드를 컴파일 할 때는 찾을 수 없으며 프로그램을 실행시켜서 위의 상황에 맞는 경우에만 에러가 발생합니다. 자바는 이러한 오류에 대응하기 위해 '예외 처리' 기능을 제공합니다. 예외처리 가 없을 경우 아래의 코드를 보면 배열의 범위를 벗어나게 입력했다는 것을 알 수 있지만 컴퓨터는 실행하기 전까지 오류가 있다는 것을 알 수 없습니다. 따라서 아래 코드는 정상적으로 컴파일 및 num[4] 위의 코드까지 실행되다가 num[4]..
자바 임포트란 다른 패키지 안의 클래스를 사용하기 위해서는 클래스 이름 앞에 패키지를 붙여야 합니다. 하지만 다른 패키지에 속한 클래스의 이름 앞에 매번 패키지 이름을 붙이는 것은 상당히 번거로운 작업이기 때문에 파일의 앞머리에 임포트(import)라는 작업으로 패키지를 매번 입력하는 단점을 없애 줄 수 있습니다. 임포트 작업을 해주면 다른 패키지 안의 클래스를 사용할 때 클래스 이름만 적어주면 됩니다. 임포트 기능의 단점(?) 임포트의 경우 다른 패키지와 클래스 명칭이 겹치면 자바에서는 이를 구분할 수 없기 때문에 클래스 충돌이 발생합니다. The import Package conflicts with a type defined in the same file. 아래 사진은 Chapter13_package..
자바 패키지란 자바 패키지란 클래스들의 모음집 입니다. 패키지를 통해서 라이브러리끼리 구분이 가능합니다. 패키지를 사용하는 이유는 클래스명의 고유성을 보장하기 위함입니다. 때로는 서로 다른 용도의 라이브러리를 도입할 때 이름이 충돌하는 클래스들이 있을 수 있는데 이럴 때 패키지 기능을 사용하여 클래스의 이름이 충돌하는 것을 방지할 수 있습니다. 네임스페이스란 많은 클래스를 다루어야 하는 대규모 프로그램을 작성하는 경우 이름이 같은 클래스를 사용해야 하는 상황이 있습니다. 이렇게 패키지에 의해 나뉘어진 클래스의 이름의 모임을 일컬어 '네임스페이스' 라고 부릅니다. 다른 패키지 안의 클래스를 사용하기 위한 조건 1. 다른 패키지의 클래스에서 사용될 클래스의 이름 앞에 public 을 사용해야 합니다. 클래스..
파일 분할하기 대규모 프로그램을 작성할 때는 여러 사람이 분담하여 프로그램을 작성합니다. 이럴 때 여러 클래스를 하나의 파일을 작성하면 매우 불편하기 때문에 클래스를 다른 파일에 나누어 작성합니다. 파일 분할의 장점 가독성 증가 100개의 클래스로 구성되어 있는 하나의 파일이 있고 1개의 클래스로 구성되어 있는 100개의 파일이 있다고 가정합니다. 어떤게 가독성이 좋을까요? 파일이 많으면 보기 불편하지 않을까요? 라고 하실 수 있겠지만 파일명으로 용도를 구분할 수 있고 1개 파일의 코드도 짧아지기 때문에 가독성도 높아지게 됩니다. 유연성 증가 클래스들을 여러사람이 수정해야 한다고 합니다. 하나의 파일에서 모든사람이 붙어서 수정하는 것과, 파일로 나뉘어져 있는 클래스들을 각각 붙어서 수정하는 것. 어떤 것..
자바 인터페이스란 인터페이스란 '같은 기준으로 구현하기 위한 기본 밑그림' 으로 보시면 됩니다. 이 밑그림 속에 객체가 어떤 추상메소드와 어떤 상수로 구성되는지를 작성합니다. 밑그림만 구성하기 때문에 인터페이스 내부 메소드에는 로직을 작성할 수 없습니다. 인터페이스의 용도 내부 로직을 구현할 수 없는데 그럼 인터페이스는 어떠한 용도로 쓰는걸까? 클래스의 틀을 제공합니다. 대규모 프로젝트 개발 시 정형화된 개발을 위한 표준화로 사용할 수 있습니다. 표준화가 되기 때문에 프로그램의 유지보수성을 높일 수 있습니다. 클래스 간의 관계를 인터페이스로 연결하면, 클래스마다 독립적으로 프로그래밍이 가능합니다. 이 말은 한 클래스의 변경이 관련된 다른 클래스에 영향을 미치지 않도록 프로그래밍이 가능하다는 의미입니다. ..
인터페이스란 인터페이스를 상속받는 다수의 서브클래스에서 같은 기준으로 구현하도록 하기위한 기본 밑그림으로 보시면 편할 것 같습니다. 인터페이스를 상속받는 서브클래스는 다수개가 될 수 있습니다. 서브클래스마다 각각의 함수로 구현을 한다면 나중에 호환이 되지 않아서 오류가 발생할 수 있습니다. 이런 오류를 방지하고자 기본틀을 만들어 주는 기능이 인터페이스 입니다. 인터페이스 구조 인터페이스 선언 시 class 명칭 대신 interface 명칭을 사용합니다. 인터페이스는 필드와 메소드를 가질수 있지만 생성자를 가질수는 없습니다. 일반적으로 인터페이스 멤버에는 어떠한 제한자도 붙이지 않습니다. 그러나 필드는 public static final, 메소드는 abstract 제한자를 붙인것과 동일하게 적용됩니다. 즉..
instanceof 연산자 객체의 클래스를 알아내는 연산자 입니다. 추상클래스를 사용하다 보면 많은 양의 서브 클래스를 다뤄야 하는 경우가 있습니다. 이럴 때 instanceof 연산자를 사용하여 어떤 서브클래스 객체를 사용하는지 알아낼 수 있습니다. instanceof 연산자를 사용하면 좌변의 변수가 가리키는 객체의 클래스가 오른쪽과 같은 클래스인지 여부를 확인할 수 있습니다. 예제 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 public class instanceofTest { public static void main(String[] args) { // TODO Aut..
추상클래스란 일반적인 방식의 객체생성 불가 일반적인 방식으로 객체를 생성할 수 없는 클래스를 의미합니다. 따라서 new 명령어로 객체 생성이 불가능합니다. 배열 방식으로의 객체 생성 위에서 '일반적인 방식'으로를 언급한 이유는 배열로는 new 연산자로 객체생성이 가능합니다. 이유는 추상클래스로 객체를 만들수는 없지만 그 클래스의 변수나 배열에 서브 클래스의 객체를 담을 수 있기 때문입니다. 추상클래스 사용방법 추상클래스를 사용하기 위해서는 클래스 명 앞에 abstract 를 명시해 주어야 합니다. 또한 추상클래스에서는 추상메소드를 사용할 수 있는데 추상메소드란 몸체가 없는 메소드를 가질 수 있는 함수를 의미합니다. 추상메소드 명 앞에는 abstract 를 명시해 주어야 합니다. 추상클래스 사용이유 그렇다..
오버로딩과 오버라이딩의 차이점 오버로딩과 오버라이딩의 개념은 다음과 같습니다. 개념 설명 오버로딩 메소드 이름이 같지만 인수의 형과 개수가 다른 메소드를 정의 오버라이딩 슈퍼클래스와 서브클래스에서 메소드이름 인수의 형 개수가 모두 똑같은 메소드를 정의 예제 코드 오버로딩 같은 메소드 명에 인자 수가 다른 메소드를 사용하는 방법입니다. 이런 경우에는 인자와 타입에 맞는 메소드가 호출됩니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 public class overloadingTest { public static void main(String[] args) { // TODO Auto-generated method stub ol col = new ol(); col.s..
꽁담
'Computer Language/JAVA' 카테고리의 글 목록 (2 Page)