프로그래밍/JAVA
-
[JAVA] final프로그래밍/JAVA 2020. 8. 10. 00:48
final 클래스 final이 클래스 앞에서 사용되면 클래스를 상속받을 수 없음을 지정 final class FinalClass { // 이 클래스는 상속 불가 .... } class SubClass extends FinalClass { // 컴파일 오류 발생, FinalClass 상속 불가 .... } final 메소드 final로 메소드를 선언하면 오버라이딩할 수 없는 메소드임을 선언 자식 클래스가 부모 클래스의 특정 메소드를 오버라이딩하지 못하게 하고 무조건 상속받아 사용하게끔 함 public class SuperClass { protected final int finalMethod() { .... } // finalMethod()는 자식이 오버라이딩 불가 } class SubClass extend..
-
[JAVA] static 멤버, static 메소드프로그래밍/JAVA 2020. 8. 5. 01:14
static 멤버의 선언 class StaticSample { int n;// non-static 필드 void g() {....} // non-static 메소드 static int m;// static 필드 static void f() {....}// static 메소드 } non-static 멤버와 static 멤버의 차이점 non-static 멤버 static 멤버 공간적 특성 멤버는 객체마다 별도 존재 - 인스턴스 멤버라고 부름 멤버는 클래스 당 하나 생성 - 멤버는 객체 내부가 아닌 별도의 공간(클래스 코드가 적재되는 메모리)에 생성 - 클래스 멤버라고 부름 시간적 특성 객체 생성시에 멤버 생성됨 - 객체가 생길 때 멤버도 생성 - 객체 생성 후 멤버 사용 가능 - 객체가 사라지면 멤버도 사라..
-
[JAVA] 자바 리플렉션(Java Reflection)프로그래밍/JAVA 2020. 7. 31. 19:05
리플렉션(Reflection)이란? 구체적인 클래스 타입을 알지 못해도 해당 클래스의 생성자, 메소드, 타입, 변수들에 접근할 수 있도록 도와주는 기본적으로 Java에서 제공하는 API 리플렉션의 필요성? 동적으로 클래스를 사용해야할 때 필요. 작성 시점에는 어떤 클래스를 사용해야할 지 모르는 경우, 런타임 시점에서 클래스를 가져와서 실행해야 하는 경우에 사용 ex) IntelliJ의 자동완성, 스프링 프레임워크의 어노테이션 등 ※ 런타임 : 프로그래밍 언어가 구동되는 환경 리플렉션의 원리 Java에서는 모든 .class 파일 하나당 java.lang.Class 객체를 하나씩 생성된다. Class는 모든 .class들의 정보를 가지고 있으며 .class 파일에 같이 저장된다. 모든 .class들은 이 클..
-
[JAVA] 상속 예제프로그래밍/JAVA 2020. 7. 26. 02:23
public class ParentClass { int openYear = 1995; public ParentClass() { System.out.println("부모 클래스 생성자"); } public void parentFun() { System.out.println("parentFun()"); } private void privateFun() { System.out.println("privateFun()"); } public void makeJJajang() { System.out.println("makeJJajang() START"); } } public class FirstChildClass extends ParentClass { int openYear = 2010; public FirstChi..
-
[JAVA] 접근지정자(Access Specfier)프로그래밍/JAVA 2020. 7. 26. 02:08
자바의 4가지 접근 지정자 접근 지정자(Access Specifier)는 클래스나 멤버들을 다른 클래스에서 접근해도 되는지의 여부를 선언하는 지시어 자바에는 private, protected, public, default 4가지 접근 지정자가 존재 클래스 접근 지정 다른 클래스에서 이 클래스를 활용할 수 있는지 허용 여부를 지정하는 것 public 클래스 클래스 이름 앞에 public으로 선언된 클래스 패키지에 상관없이 다른 어떤 클래스에게도 사용이 허용 // public 클래스 public class Public { .......... } default 클래스 접근 지정자 없이 클래스를 선언한 경우 default로 접근 지정됨 같은 패키지 내의 클래스들에게만 사용이 허용 // default 클래스 cl..
-
[JAVA] 가비지 컬렉터(Garbage Collector)프로그래밍/JAVA 2020. 7. 26. 02:06
객체의 소멸과 가비지 자바는 객체를 생성하는 new 연산자는 있지만 객체를 소멸시키는 연산자는 없음 => 개발자가 마음대로 객체를 소멸시킬 수 없음 객체 소멸이란 new에 의해 생성된 객체 공간을 JVM(Java Virtual Machine)에게 돌려주어 가용 메모리에 포함시키는 것 C++과 다르게 delete 연산자, 소멸자가 존재하지 않음 => 할당받은 메모리를 반환하는 코딩으로부터 자유로움 자바에서 new로 할당받은 후 사용하지 않게 된 객체 혹은 배열 메모리를 가비지라고 부름 JVM의 가비지 컬렉터(Garbage Collector)가 적절한 시점에 자동으로 가비지를 수집하여 가용 메모리에 반환 ※ JVM : 운영체제의 메모리 영역에 접근하여 메모리를 관리하는 프로그램(메모리 관리, 가비지 컬렉션 ..
-
[JAVA] 클래스와 객체 + 생성자프로그래밍/JAVA 2020. 7. 26. 00:38
객체 지향 언어의 특성 캡슐화(Encapsulation) 객체를 캡슐로 싸서 내부를 보호하고 볼 수 없게 하는 것 외부의 접근으로부터 안전 객체의 캡슐화가 기본 원칙 but 외부와의 접속을 위해 부분 공개 노출 ex) TV는 내부를 캡슐화하고 On/Off 버튼, 채널 버튼, 음량 버튼 등을 리모컨과의 통신을 위해 공개 노출 상속(Inheritance) 자식 클래스가 부모 클래스의 속성을 물려받고 기능을 추가하여 확장 자식 클래스 == 서브 클래스 // 부모 클래스 = 슈퍼 클래스 다형성(Polymorphism) 같은 이름의 메소드가 클래스 혹은 객체에 따라 다르게 동작하도록 구현 상속관계에 있는 서브 클래스에서 동일한 이름으로 메소드를 다시 구현하는 오버라이딩 같은 클래스 내에서 이름이 같지만 서로 다르..
-
[JAVA] JDK 설치 및 환경변수 설정프로그래밍/JAVA 2019. 12. 16. 01:25
1. JDK 1.8 설치 https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html Java SE Development Kit 8 - Downloads Java SE Development Kit 8 Downloads Thank you for downloading this release of the Java™ Platform, Standard Edition Development Kit (JDK™). The JDK is a development environment for building applications, applets, and components using the Java programming la www...