전체 글 89

17. 추상클래스

1) 추상클래스 추상 클래스란 구체적이지 않은 클래스를 의미한다. 독수리, 타조는 구체적인 새를 지칭하는데 새, 포유류 같은 것은 구체적이지 않다.이런 것을 구현한 클래스를 추상 클래스라고 한다.추상 클래스 정의하기 추상 클래스는 클래스 앞에 abstract 키워드를 이용해서 정의한다. 추상 클래스는 미완성의 추상 메소드를 포함할 수 있다. 추상 메소드란, 내용이 없는 메소드 이다. 즉 구현이 되지 않은 메소드이다. 추상 메소드는 리턴 타입 앞에 abstract라는 키워드를 붙여야 한다. 추상 클래스는 인스턴스를 생성할 수 없다. 추상 클래스를 상속받는 클래스 생성하기 추상 클래스를 상속받은 클래스는 추상 클래스가 갖고 있는 추상 메소드를 반드시 구현해야 한다. 추상 클래스를 상속받고, 추상 클래스가 갖..

JAVA 2021.03.29

16. 접근제한자

접근제한자 접근 제한자란 클래스 내에서 멤버의 접근을 제한하는 역할을 한다. 접근제한자의 종류 public 어떤 클래스든 접근할 수 있다는 것을 의미 protected 자기 자신, 같은 패키지, 서로 다른 패키지다 하더라도 상속받은 자식 클래스에서는 접근할수 있다는 것을 의미 private 자기 자신만 접근할 수 있다는 것을 의미 접근제한자를 적지 않으면 default접근 지정자 자기자신과 같은 패키지에서만 접근할 수 있다는 것을 의미 AccessObj를 사용하는 AccessObjExam AccessObj의 필드 i 의 접근 제한자는 private이므로 다른 클래스인 AccessObjExam에서 접근할 수 없다. AccessObj 와 다른 패키지에서 사용해보기 패키지가 달라졌기때문에 default접근제한..

JAVA 2021.03.29

15. 상속

상속 상속이란? 부모가 가진것을 자식에게 물려주는것을 의미한다. 노트북은 컴퓨터의 한 종류다. 침대는 가구의 한 종류다. 혹은 침대는 가구다. 소방차는 자동차다. 이렇게 말할 수 있는 관계를 is a 관계 혹은 kind of 관계라고 한다. Car 를 상속받은 Bus 를 class로 표현하는 방법 자바는 클래스 이름 뒤에 extends 키워드를 적고 부모클래스 이름을 적게 되면 부모 클래스가 가지고 있는 것을 상속받을 수 있게 된다. 상속이란 부모가 가지고 있는 것을 자식이 물려받는 것을 말한다. 즉, 부모가 가지고 있는 것을 자식이 사용할 수 있게 된다. 부모클래스에 메소드 추가하기 Car에 run()메소드를 추가 Car를 상속받은 Bus 사용 Bus에 메소드 추가 Bus는 Car에서 물려받은 run메..

JAVA 2021.03.29

14. 생성자 오버로딩과 this

1)생성자 오버로딩 생성자의 매개변수의 유형과 개수가 다르게 하여 같은 이름의 생성자를 여러 개 가질 수 있다. 생성자도 메소드와 마찬가지로 여러개를 선언할 수 있다. 매개변수의 수와 타입이 다르다면 여러개의 생성자를 선언할 수 있다. 오버로딩된 생성자 이용하기 2) 자기 생성자 호출하는 this() 자기 생성자 호출하는 this() 기본생성자를 호출하였을 때 name을 "이름없음" , 숫자를 0으로 초기화 하기 위처럼 작성했을 경우 코드의 중복이 일어난다. 자신이 가지고 있는 다른 생성자를 이용할 수 있다. this괄호 열고로 시작하면 자신의 생성자를 호출하는 것이다. 자기 자신의 생성자를 호출함으로써 비슷한 코드가 중복되서 나오는 것을 방지할 수 있다.

JAVA 2021.03.26

13. 오버로딩

메소드 오버로딩 매개변수의 유형이나 개수가 다르게 하여 같은 이름의 메소드를 여러 개 가질 수 있게하는 기술메소드 오버로딩 이름은 같지만 매개변수가 다른 메소드 메소드 오버로딩은 매개변수 부분이 달라야 한다. 위처럼 변수명은 다르지만, 매개변수의 타입과 개수가 동일한 메소드를 또 정의 할 수는 없다. 오버로딩된 메소드 이용하기 메소드의 인자에 어떤 값이 쓰이느냐에 따라서 각기 다른 메소드가 호출된다.

JAVA 2021.03.26

12. this

this this는 현재 객체, 자기 자신을 나타낸다. this 의 사용 Car클래스의 생성자 매개변수의 이름이 n 이다. n 이라는 변수명은 무엇을 의미하는지 쉽기 알수 없다. n 으로 쓰기 보다는 name 으로 사용하는 것이 좋다. 'name=name' 이라고 코드를 바꾸면, 가깝게 선언된 변수를 우선 사용하기 때문에 'name=name'이라는 코드는 매개변수의 name의 값을 매개변수 name에 대입하라는 의미가 된다. 즉, 필드는 바뀌지 않습니다. 이런 경우 필드라는 것을 컴파일러와 JVM에게 알려주기 위해서 this키워드를 사용해야 한다. 앞의 this.name은 필드 name을 말하고 =(이퀄) 뒤의 name은 매개변수를 의미한다. 즉 매개변수의 값을 필드에 대입하라는 의미가 된다. 클래스 안..

JAVA 2021.03.26

11. 생성자

생성자 모든 클래스는 인스턴스화 될때 생성자를 사용한다.생성자의 특징 생성자는 리턴타입이 없다. 생성자를 프로그래머가 만들지 않으면 매개변수가 없는 생성자가 컴파일할 때 자동으로 만들어진다. 매개변수가 없는 생성자를 기본생성자라고 한다. 생성자를 하나라도 프로그래머가 만들었다면 기본생성자는 자동으로 만들어지지 않는다. 생성자의 역할 생성자가 하는 일은 객체가 될 때 필드를 초기화 하는 역할을 수행한다. 자동차가 객체가 될때 반드시 이름을 가지도록 하려면,Car클래스를 다음과 같이 만들어야 한다. 위의 Car 클래스를 이용하여 Car 인스턴스를 생성하는 방법 Car클래스는 기본 생성자를 가지지 않는다. 그래서 기본생성자로 Car 객체를 생성할 수 없다.

JAVA 2021.03.26

10. 열거형(enum)

열거형(enum) 자바는 열거타입을 이용하여 변수를 선언할 때 변수타입으로 사용할 수 있다. 열거형은 JDK5에서 추가되었다. JDK5 이전에는 상수를 열거형 대신 사용 상수를 이용하는 방법 상수를 사용했때의 문제점 String으로 선언된 gender1 에는 MALE,FEMALE 둘 중 한가지 값을 갖기 원하는데, gender1의 type이 String 이기 때문에 gender1 = "소년"; 이렇게 수행 되어도 전혀 문제가 되지 않는다. 실행할때 원했던 값인 MALE,FEMALE 이 아닌 다른 값이 들어오게 되므로 문제를 발생시킬 수 있다. 해결 방법 이런 문제를 발생시키지 않게 하기 위해서 열거형을 사용하시면 됩니다. 열거형 정의 방법 열거형 사용 방법 특정 값만 가져야 한다면 열거형을 사용하는 것이..

JAVA 2021.03.26

9.변수의 scope와 static

변수의 scope와 static 변수의 스코프프로그램상에서 사용되는 변수들은 사용 가능한 범위를 가진다. 그 범위를 변수의 스코프라고 한다.변수가 선언된 블럭이 그 변수의 사용범위이다. 클래스의 속성으로 선언된 변수 globalScope 의 사용 범위는 클래스 전체 이다. 매개변수로 선언된 int value 는 블럭 바깥에 존재하기는 하지만, 메서드 선언부에 존재하므로 사용범위는 해당 메소드 블럭내이다. 메소드 블럭내에서 선언된 localScope 변수의 사용범위는 메소드 블럭내이다. main메소드에서 사용하기 같은 클래스 안에 있는데 globalScope 변수를 사용 할 수 없다. main은 static한 메소드이다. static한 메서드에서는 static 하지 않은 필드를 사용 할 수 없다. stat..

JAVA 2021.03.26

9. 메소드

1) 메소드란? 필드가 물체의 상태라면, 물체의 행동에 해당하는게 메소드다. car에 이름과 번호가 있기도 하지만, car는 앞으로 전진할수도 있고 후진하는 행동도 할 수 있다. 메소드는 입력값이 있고, 그 입력값을 받아서 무언가 한 다음 결과를 도출해 내는 수학의 함수와 비슷한 개념이다. 이때 입력값을 매개변수라고 하고,결과값을 리턴값이라고 합니다. 인자( Argument ) 는 어떤 함수를 호출시에 전달되는 값을 의미한다. 매개 변수( Parameter ) 는 그 전달된 인자를 받아들이는 변수를 의미한다. 메소드란 클래스가 가지고 있는 기능이다. 클래스 안에 선언됩니다. 2) 메소드 활용 메소드를 사용하기 위해서는 메소드가 정의된 클래스인 MyClass 가 생성되어야 한다 객체를 생성할 때는 new ..

JAVA 2021.03.26