본문 바로가기

java/basic 문법10

제네릭스 타입 컴파일 Generics type erasure 제네릭스(Generics)란? - 데이터 타입을 일반화(Generalize)하는 것을 의미 - 다양한 타입의 객체들을 다루는 메소드나 컬렉션 클래스에 컴파일 시의 타입 체크를 해주는 기능 제네릭스를 사용하는 이유 - 클래스나 메소드 내부에서 사용되는 객체의 안정성을 높일 수 있다. - 반환값에 대한 타입 변환 및 타입 검사에 들어가는 노력을 줄일 수 있다. 제네릭스의 형식 public class 클래스명 {...} public interface 인터페이스명 {...} == Type == Element == Key == Value == Number == Result Java Generics Type Erasure(제네릭 타입소거) 구체화 vs 비구체화 구체화 타입(reifiable type) : 자신의 타.. 2022. 10. 8.
scope, static 변수가 선언된 블럭이 그 변수의 사용범위이다. public class ValableScopeExam{ // 전역 변수 int globalScope = 10; // 인스턴스 변수 public void scopeTest(int value)//블럭 바깥에있지만 지역변수 처럼 사용{ //지역변수 int localScope = 10; System.out.println(globalScope); System.out.println(localScpe); System.out.println(value); } public static void main(String[] args) { System.out.println(globalScope); //오류 // 인스턴스화 해서 사용하거나 static 이용 System.out.prin.. 2022. 9. 27.
인터페이스(interface) interface = 객체의 특정 행동의 특징을 정의하는 문법 1. 인터페이스 형식 interface Interface{ public abstract void 추상메서드명(); public void 메서드명(); //둘다 사용가능 } 2. 인터페이스 vs 추상클래스 ●인터페이스 ●추상클래스 1) 구현하려는 객체의 동작을 정의 1) 클래스를 상속받아 이용 2) 다중 상속 가능 ↔ 2) 다중 상속 불가능 3) implements를 이용해서 구현 3) extends를 이용해서 구현 4) method signature 4) abstract method에 대한 구현 가능 3. 코드 Car클래스 interface1 interface2 Sedan 클래스 SportsCar 클래스 Main 클래스 2022. 8. 4.
추상클래스 추상클래스란? - 추상메서드를 선언할 수 있는 클래스 - 상속받는 클래스 없이 그 자체로 인스턴스를 생성할 수 없는 클래스 - 설계만 되어있고 수행되는 코드에 대해서는 작성이 안된 메서드 추상 메서드 선언 상속 받는 클래스 없이 그 자체로 인스턴스를 생성할 수 없음 추상 메서드 형식 설계만 되어있고 수행되는 코드에 대해서는 작성이 안된 메서드 미완성으로 남겨두는 이유는 상속받는 클래스 마다 반드시 동작이 달라지는 경우에 상속받는 클래스 작성자가 반드시 작성하도록 하기 위해서 ↓ 2022. 8. 4.
상속(inheritance) 상속이란 ? - 기존의 클래스를 재사용하는 방식중의 하나이다. - 한 번 작성한 코드가 재사용이 필요할때 상대적으로 적은 양의 코드를 작성 할 수있다. - 코드를 재사용할시, 코드와 클래스가 많아질수록 관리가 용이해진다. 상속의 특징 - 상속을 통해 클래스간의 계층구조를 만들게 된다. - 부모 클래스에서 정의된 필드와 메소드를 물려 받는다. - 새로운 필드와 메소드를 추가 할 수 있다. - 자식은 오직 부모의 class만 상속받을 수 있다 ↔ 부모는 여러개의 class를 상속 할 수 있다. - 자식 클래스는 부모 클래스로부터 메소드와 필드를 물려받아 사용한다. - 부모 클래스는 자식 클래스에서 정의한 메소드나 필드를 사용하지 못한다. - 자식 클래스가 더 다양한 기능이 가능하므로 자식클래스로 인스턴스를 .. 2022. 8. 2.
생성자(constructor) 인스턴스가 생성될때 사용하는 "초기화 method" (new할때만 불리는 기능) 생성자 만드는 규칙 - 클래스(class) 이름 과 동일한 이름으로 지어주어야 한다. - return 값이 오지 않아야한다 (생각해보면 return 값이 필요없다) - parameter 로 받을 매개변수들을 입력한다. ↓ Phone(String model, String color, int price){ this.model = model; // this.model = Phone 클래스에 선언된 멤버 this.color = color; // 생성자 파라미터 model = 값을 전달받을 매개변수 this.price = price; // 전달받은 값이 클래스 멤버 변수에 들어간다. } 2022. 8. 2.
객체 지향 언어 (클래스, 인스턴스 ,메서드) 객체 지향의 기본 개념 : 실제 세계는 사물(객체)로 이루어져 있으며 , 발생하는 모든 사건들은 사물간의 상요작용 이다. 객체 지향 이론 : 상속, 캡슐화, 추상화 장점 - 코드의 재사용이 높다 - 코드 관리가 용이하다. - 신뢰성이 높은 프로그래밍을 가능하게 한다. ● 제어자와 메서드를 이용해서 데이터를 보호, 올바른 값을 유지하도록 함 ● 코드의 중복을 제거해 코드의 불일치로 인한 오작동 방지 클래스와 객체 1)클래스 클래스란 ? - 객체를 정의해 놓은것 - 객체의 설계도 또는 틀 클래스의 용도 : 객체를 생성하는데 사용 ex) 붕어빵기계 = 클래스 , 붕어빵 = 객체 ex) Tv설계도 = 클래스 , Tv = 객체 ↓ 클래스는 객체를 생성하는데 사용될 뿐 객체 그 자체는 아님 2) 객체 객체란? - .. 2022. 8. 1.
참조 자료형 class로 정의된 타입을 쓸때는 모두 참조 자료형이다. import java.util.Arrays; public class Main{ public static void main(String[] args){ String thatThat = "thatThat"; System.out.println(thatThat); //[]배열을 나타냄 //int [] 자료형은 기본 int 자료형이 아니므로 참조 자료형 int[] intArray = new int[] {1 , 2, 3, 4, 5}; System.out.println(Arrays.toString(intArray)); } } 2022. 7. 27.
변수와 상수 public class Main { public static void main(String[] args){ // write your code here int number = 5; System.out.println(number); String world = "Hello World"; System.out.println(sparta); //상수 final int finalNumber = 1; //final = 접근제어자, int = 자료형 System.out.println(finalNumber); //상수 이기 때문에 finalNumber = 2; 선언할수 없다. 재할당불가 System.out.println(finalNumber); world = "Good Bye World"; //변수 이기때문에 재할당 가능.. 2022. 7. 27.
Java의 역사 Java 언어의 특징 - 자바는 제임스 고슬링과 연구원들이 개발한 객체 지향적 프로그래밍 언어 이다. - 한 번 작성하면 어디에서나 실행된다(JRE가 설치된 모든 환경에서 실행이 가능하다) - 1995년 탄생한 이후로 꾸준히 축척된 노하우로 안정성이 좋다. - 오랜기간 개발된 오픈소스 라이브러리가 많다. - 다양한 사람들이 개발하고 공유하는 방대한 라이브러리를 사용하면 개발 시간을 단축할 수 있다. Java를 사용하는곳 - 백엔드 서버 개발 - 데이터 엔지니어링 - 하드웨어 실행환경에 구애받고 싶지 않은 모든 곳 Java의 한계 - 예전에 정해진 Java의 문법 때문에, 더 유연하고 견고한 코드를 만들기 어려운 점이 있다. - 현재 전세계의 많은 개발자들이 자바를 대체하는 새로운 언어를 사용하고 개발하고.. 2022. 7. 27.