일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- telegraf
- linux시간으로 변경
- subporcess path
- influxdb 설치
- grafana dashboard
- c3 축 없애기
- c3 초
- 백준
- 정규식 문자열 출력
- python os
- snmp test
- centos pyhon 설치
- gcc regex
- g++ 업데이트
- c3 second
- gcc 업데이트
- c3 step graph
- 정규식 컴파일
- python subprocess
- semanage
- 1697
- regex_search
- 정규식 활용
- c++ 정규식
- CentOS7
- c3 축 가리기
- InfluxDB
- selinux port 등록
- python popen
- snmp
- Today
- Total
목록Java(폐지)/Java 공부 (21)
리셋 되지 말자
static 블록 자바에서는 객체 생성자가 존재하지만 클래스 생성자는 존재하지 않는다. 그러나 클래스가 스태틱 영역에 배치될 때 실행되는 코드 블록이 있는데, 바로 static 블록이다. Driver01 package staticBlock; public class Driver01 { public static void main(String[] args) { 동물 뽀로로 = new 동물(); } } 동물 package staticBlock; public class 동물 { static { System.out.println("동물 클래스 준비"); } } 결과 동물 클래스 준비static 블록 예시 package staticBlock; public class Driver01 { public static voi..
생성자(Constructor) 클래스의 인스턴스, 즉 객체를 만들 때마다 new 키워드를 사용한다. new 클래스명(); 이렇게 사용하는데, '클래스명()'도 함수이다. 반환값이 없고 클래스명과 같은 이름을 가진 메서드를 객체를 생성하는 메서드라고 해서 '객체 생성자 메서드'라고 한다. 생성자 규칙 반환값이 없다. 클래스명과 메소드명이 같다. 생성자를 작성하지 않으면, 컴파일과정에서 자바컴파일러가 알아서 아래의 코드처럼 기본 생성자를 만들어준다. 아무런 인자를 갖지 않는 생성자를 기본 생성자 메서드라고 한다. package constructor01; public class 동물 { public 동물(); } 생성자를 이용한 인스턴스 생성 package constructor01..
추상 메서드(Abstract Method) 추상 메서드를 간단하게 설명하면 선언부는 있는데 구현부가 없는 메서드를 말한다. 추상 메서드를 하나라도 갖고 있는 클래스는 반드시 추상 클래스(Abstarct Class)로 선언해야 한다. 추상 메서드 없이도 추상 클래스를 선언할 수 있다. 추상 클래스(Abstract Class) 추상 클래스는 인스턴스, 즉 객체를 만들 수 없는 클래스가 된다. 몸체가 없이 선언만 있는 메서드는 어떤 것이고 왜 필요한가? - 코드 예제 동물 클래스가 있고, 이 동물 클래스를 상속(확장)하여 여러 동물 클래스를 만든다고 가정한다. 이 동물들의 울음소리를 동물 클래스에서 '울다()'라는 함수를 사용하여 출력할 때, 동물 클래스의 '울다()'라는 메서드는..
package reference; public class CallByReference { public static void main(String[] args) { Animal ref_a = new Animal(); Animal ref_b = ref_a; ref_a.age = 10; ref_b.age = 20; System.out.println(ref_a.age); // 20 System.out.println(ref_b.age); // 20 } } class Animal { public int age; } 결과 20 20 T메모리 ref_a와 ref_b가 가지는 값은 :Animal의 주솟값이다. Call by value와 Call by reference의 차이는 변수가 가지고 있는 값을 '값 자체&..
객체 지향에서 다향성이라고 하면 오버라이딩(overriding)과 오버로딩(overloading) 이라고 할 수 있다. -> 상위 클래스와 하위 클래스 사이에서도 다형성을 이야기할 수 있고, 인터페이스와 그것의 구현 클래스 사이에서도 다형성을 이야기할 수 있지만 가장 기본은 오버라이딩과 오버 로딩이라고 할 수 있다. (참고 : 오버로딩이 다형성인지 아닌지에 대해서는 이견이 있다.) 오버 라이딩과 오버 로딩 오버 라이딩 : 상위 클래스의 메서드를 '재정의' 오버 로딩 : 상위 클래스의 메서드를 인자 리스트를 다르게 하여 '중복정의' Animal package polymorphism01; public class Animal { public String name; public void showName() { ..
상속과 T 메모리를 알아보기 위한 예제 Amimal package inheritance03; public class Animal { public String name; public void showName() { System.out.printf("안녕 나는 %s야. 반가워\n", name); } } Penguin package inheritance03; public class Penguin extends Animal{ public String habitat; public void showHabitat() { System.out.printf("%s는 %s에 살아\n", name, habitat); } } main package inheritance03; public class Main01 { public ..
자바의 다중 상속 자바는 다중 상속을 지원하지 않는다. 왜? C++를 계승/발전/단순화하면서 다중 상속을 빼버린 이유는 다음과 같다. 위와 같이 사람과 물고기를 상속받은 인어라는 클래스에서 '수영하다'라는 메서드가 실행되면 사람 클래스의 수영메서드를 수행할지, 물고기 클래스의 수영메서드를 수행할지 정하기가 애매하다. 이와 같은 문제를 '다중 상속의 다이아몬드 문제'라고 한다. 결국 다중상속은 득실 관계에서 실이 더 많았기에 자바와 C#에서는 다중 상속을 포기했다. 대신 자바에서는 C++에는 없는 '인터페이스'를 도입해 다중 상속의 득은 취하고 실은 과감히 버렸다. 상속과 인터페이스 상속 관계가 is a kind of 관계라고 앞 절에서 언급하였다. 해석과 예제를..
상속 : 재사용 + 확장 객체 지향에서의 상속은 '상속'이 아닌 '재사용과 확장'으로 이해해야 한다. 객체 지향에서의 상속 상위 클래스의 특성을 하위 클래스에서 상속(특성 상속)하고 거기에 더해 필요한 특성을 추가, 즉 확장해서 사용할 수 있다는 의미이다. 이를 고려하여 앞으로는 부모 클래스, 자식 클래스로 부르기보다는 상위 클래스, 하위 클래스 또는 슈퍼 클래스, 서브 ㅡㄹ래스라고 표현하기로 한다. 상위 클래스로 갈수록 추상화, 일반화 되었다고 하며 하위 클래스로 갈수록 구체화, 특수화 됐다고 말한다. 상속 관계에서 반드시 만족해야 하는 문장 하위 클래스는 상위 클래스다. -> 포유류는 동물이다. -> 고래는 포유류다. -> 고래는 동물이다. 나중에 학습할 객체 지향 설계 ..