목록Back-end (46)
NULL
추상클래스 구체적이지 않은 클래스를 의미한다. 예를 들면, 타조, 독수리는 구체적인 새를 지칭하지만 새, 포유류 같은 것은 구체적이지 않다. 추상클래스 정의 1. 클래스 앞에 abstract를 선언한다. 2. 추상클래스는 미완성의 추상 메소드를 포함할 수 있다. 3. 추상메소드란, 내용이 없는 메소드이다 즉 구현이 되지 않은 메소드이다. 4. 추상메소드는 리턴 타입 앞에 abstract 키워드를 붙어야한다. 5. 추상 클래스는 인스턴스 생성불가능하다. public abstract class Bird{ public abstract void sing(); public void fly(){ System.out.println("날다."); } } 추상클래스를 상속받는 클래스 생성하기 추상클래스를 상속받은 클래스..
캡슐화 관련된 내용을 모아서 가지고 있는 것 접근제한자 클래스내에서 멤버의 접근을 제한한다. 접근제한자 종류 public - 어떤 클래스든 모든 접근 허용 protected - 자신, 같은 패키지, 서로 다른 패키지라면 상속받은 자식클래스에서는 접근가능 private - 자신만 접근가능 접근제한자를 적지 않으면 default접근 지정자 - 자신과 같은 패키지에서만 접근가능 접근제한자 범위가 넓은 순서 public > protected > default > private
상속이란? 부모가 가지고 있는 것을 자식이 물려받는 것 즉. 부모가 가지고 있는 것을 자식이 사용 할 수 있게 된다. 사용법 public class 클래스명 extends 부모클래스명 // Car 클래스 선언 public class Car{ } // Car 클래스를 상속 받는 Bus 클래스 선언 public class Bus extends Car{ } 위와 같이 선언하게 되면 부모클래스 요소를 상속받게 된다. 부모가 가지고 있는 메소드 이외에 메소드를 추가로 선언하는 것을 확장한다고 한다. 주의사항 부모클래스는 자식이 가지고 있는 것을 사용 할 수 없다.
패키지(package)란? 클래스 또는 인터페이스들을 묶어 놓은 묶음이다. 다른 그룹에 속한 클래스와 클래스 이름간의 충돌을 막아줌으로 클래스 관리를 편하게 해준다. 패키지를 사용해야하는 이유 패키지를 사용하면 비슷한 클래스들끼리 묶어서 클래스 분류가 용이해진다. 자바코드를 작성하다보면 타인의 자바클래스나 라이브러리를 사용해야 할 경우도 많이 생기는데 이 때 클래스명이 동일한 경우 충돌이 일어나지만 패키지를 사용해서 클래스를 분류한다면 클래스명이 동일해도 충돌없이 사용가능하게 된다. 이와 같이 자바클래스를 배포용으로 작성하거나 한다면 반드시 패지키명을 포함하는 것이 옳은 방법이다. 간단히 클래스명 동일한 경우 패키지로 충돌방지 할 수 있다 클래스 분류에 용이하고, 패키지가 다르다면 동일 클래스명으로 사용..
생성자 오버로딩 생성자의 매개변수의 유형과 개수를 다르게 하여 같은 이름의 생성자를 여러개 가질 수 있다. 메소드와 마찬가지로 생성자도 여러개 선언가능하다. 매개변수의 수와 타입이 다르다면 여러개의 생성자를 선언할 수 있다. public class Car{ String name; int number; public Car(){ } public Car(String name){ this.name = name; } public Car(String name, int number){ this.name = name; this.number = number; } } 오버로딩된 생성자 이용하기 public class CarExam4{ public static void main(String args[]){ Car c1 = ..
메소드 오버로딩(overloading)이란 같은 이름의 메소드를 중복하여 정의하는 것이다. 자바에서는 원래 한 클래스내에서 같은 이름의 메소드를 둘 이상 가질 수 없다. 하지만 매개변수의 갯수 또는 타입이 다른경우 동일한 이름으로 메소드를 여러개 정의 할 수 있다. 장점 1. 메소드 오버로딩을 사용한다면 메소드에 사용되는 이름을 절약할 수 있다. 2. 메소드를 호출할 때 전달해야 할 매개변수의 타입, 개수에 대해 신경쓰지 않고 호출가능하게 된다. 메소드 오버로딩은 OOP의 특징 중 하나인 다형성(polymorphism)을 구현하는 방법 중 하나다. 메소드 오버로딩의 조건 1. 메소드 이름이 같아야한다. 2. 메소드 매개변수의 타입과 갯수가 달라야한다. 메소드 오버로딩의 반환 타입과는 관계없다. 만약 메소..
this는 자기자신, 현재 객체를 나타낸다. public Car(String name){ name = name; } "name = name"은 가깝게 선언된 변수를 우선 사용하기때문에 이 코드는 매개변수의 값을 매개변수 name에 대입하라는 의미가 된다. 즉 필드는 바뀌지 않고 이런 경우에서는 필드라는 것을 컴파일러와 JVM에게 알려주기위해 this를 사용해야한다. public Car(String name){ this.name = name; } this.name은 필드의 name을 가리키고, 이퀄 뒤의 name은 매개변수를 의미한다. 즉 매개변수의 값을 필드에 대입하라는 의미가 된다. 메소드를 사용할때도 this.메소드명()으로 호출가능하다.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/FG0mv/btrroL4uJMz/JiCd5Uq6vnDQUlbFPRSTiK/img.png)
모든 클래스는 인스턴스화 될때 생성자를 사용한다. Car c1 = new Car(); 빨간색 코드 부분이 생성자이다. 메소드와 다르게 생성자는 리턴타입이 존재하지 않는다. 생성자의 특징 1. 생성자는 리턴타입이 없다. 2. 매개변수가 없는 생성자를 기본생성자라고 부른다. 3. 생성자를 하나라도 만들었다면 기본생성자는 자동으로 만들어지지 않는다. 4. 생성자를 만들지않으면 컴파일할 때 매개변수가 없는 생성자가 자동으로 만들어진다. 생성자의 역할 생성자가 하는 일은 객체가 될 때 필드를 초기화하는역할을 수행한다. 자동차가 객체가 될 때 반드시 이름을 갖게 하려면, Car클래스를 다음과 같이 만들어야한다. public class Car{ String name; int number; public Car(Stri..
열거형은 특정 값만 가져야할 때 사용한다. 열거형 정의 방법 enum Gender{ MALE, FEMALE; } 열거형 사용 방법 Gender gender2; gender2 = Gender.MALE; gender2 = Gender.FEMALE; //Gender타입의 변수에는 MALE이나 FEMALE만 대입이 가능. 다른 값은 저장할 수가 없다. Gender타입변수안에 특정값인 MALE, FEMALE이 아닌 다른 값은 저장 할 수 없다.
public class VariableScopeExam { int globalScope = 10; // 인스턴스 변수 static int staticVal = 7; // 클래스 변수 public void scopeTest(int value) { int localScope = 20; //지역변수 } public static void main(String[] args) { System.out.println(staticVal); // 클래스 변수는 인스턴스화 하지 않고도 사용가능 System.out.println(globalScope); // 오류 } } 키워드 static을 사용하면 인스턴스화 하지 않아도 static을 사용할 수 있다. ValableScopeExam v1 = new ValableScopeE..