본문 바로가기
728x90
반응형

자바48

31) 다형성(polymorphism) 31) 다형성(polymorphism) 1. 다형성(많을 다/형태 형) -여러 가지 형태를 가질 수 있는 능력 -'조상타입'의 참조변수로' 자손타입' 객체를 다루는 것★★★★★ 이 클래스를 가지고 객체를 만들면 Tv t = new Tv(); //Tv객체 SmartTv s = new SmarTv();//SmartTv객체 객체와 타입이 일치되었다. 하지만, 다형성은 Tv t = new SmartTV(); //타입불일치 객체와 타입이 불일치가 된다. 조상의 타입변수로 자손 타입 객체를 다루는 것이 '다형성'이다. 2. 객체와 참조변수의 타입이 일치할 대와 일치하지 않을 때의 차이 smartTv의 리모콘은 7개의 버튼을 가지고 있다. Tv로부터 상속받은 5개의 버튼과 smartTv의 버튼 2개 총 7개의 버튼이.. 2021. 6. 9.
30) 접근제어자와 캡슐화(encapsulation) 30) 접근제어자와 캡슐화(encapsulation) 1. 접근제어자와 캡슐화 접근제어자를 사용하는 이유? -외부로부터 데이터를 보호하기 위해서 public은 접근 제한이 없다 보니 int의 범위 ±20억 사이에 아무 값이나 넣어도 그 값이 출력된다. 근데 시, 분, 초의 범위는 결정되어 있어서 범위 이외값이 들어가면 데이터가 보호되지 않는다. 그래서 접근제어자를 private로 하여 외부에서 직접 접근하지 못하도록 한다. 대신에 메서드를 public으로 설정하여 내부에서는 간접 접근을 가능하게 만든다. -외부에서 불필요한, 내부적으로만 사용되는 부분을 감추기 위해서 isNotValidHour메서드의 경우 제어자를 굳이 public으로 쓸 필요 없다. 내부에서만 맞는지 아닌지를 판단하면 되므로, priv.. 2021. 6. 7.
29) 접근제어자(access modifier): private, default, protected, public 29) 접근제어자(access modifier): private, default, protected, public 1. 접근제어자의 종류 private: 같은 클래스 내에서만 접근이 가능하다. (default): 같은 패키지 내에서만 접근이 가능하다. protected: 같은 패키지 내에서, 그리고 다른 패키지의 자손클래스에서 접근이 가능하다. public: 접근 제한이 전혀 없다. 하나의 대상에 4개 중에 1개만 사용가능하다. 제어자 같은 클래스 같은 패키지 자손클래스 전체 public O O O O protected O O O (default) O O private O public> protected>(default)>private순으로 접근 범위가 작아진다. 2. 접근제어자 주의사항 -public과.. 2021. 6. 7.
28) 제어자 static, final, abstract 28) 제어자 static, final, abstract 1. 제어자(modifier) -클래스와 클래스의 멤버(멤버변수, 메서드)에 부가적인 의미 부여 영여로 따지면 형용사와 같은 역할입니다. 형용사는 명사 앞에 붙어서 꾸며주는 역할을 하죠. 접근제어자: public. protected, (default), private : 4개 중 1개만 사용가능 그 외: static, final, abstract, native, transient, synchronized, volatile, strictfp -하나의 대상에 여러 제어자를 같이 사용 가능(접근 제어자는 하나만) 접근제어자는 하나만 사용 가능하고, 제일 왼쪽에 쓴다. 꼭 그래야 하는 건 아닌데, 주로 그렇게 씁니다. final보다 static을 왼쪽에 .. 2021. 6. 7.
27) import문, static import 27) import문, static import문 1. import문 -클래스를 사용할 때 패키지 이름을 생략할 수 있다. -컴파일러에게 클래스가 속한 패키지를 알려준다. 원래는 Data라는 클래스는 java-util패키지 안에 있는 클래스라서 java.util.Data라고 적는 게 올바른 표현이다. 하지만 모든 클래스를 이렇게 적다 보면 시간도 많이 걸리고 귀찮다. 그래서 import문을 선언하여 이 클래스가 어떤 패키지 안에 들어있는지 생략할 수 있다. 단축기 ctrl+shift+o를 사용하면 import문이 자동으로 생성된다. 똑같은 클래스가 있으면 어떤 패키지인지 선택하는 창이 나온다. 그럼 맞는 패키지를 선택하면 된다. 어? 근데 지금까지 String클래스는 패키지 이름을 매번 쓰지 않았죠? -.. 2021. 6. 7.
26) 패키지(package), 클래스패스(classpath) 26) 패키지(package), 클래스패스(classpath) 1. 패키지(package) -서로 관련된 클래스의 묶음(Java8 기준으로 약4000개의 클래스가 있음. 많아서 묶어줘야 됨) -클래스는 클래스 파일(. class), 패키지는 폴더, 하위 패키지는 하위 폴더 -클래스의 실제 이름(full name)은 패키지를 포함(이제까지 쓴 String의 실제 이름: java.lang.String) *rt.jar는 실행환경에 필요한 클래스들을 압축한 파일(JDK설치경로\jre\lib에 위치) *Java9부터 rt.jar는 module개념이 들어가면서 없어짐 *jar파일은 exe를 통해 압축을 풀 수 있음(jar.exe), jar=zip과 같음 2. 패키지의 선언 -패키지는 소스파일의 첫 번째 문장으로 단.. 2021. 6. 6.
25) 참조변수super, 생성자super() 25) 참조변수super, 생성자 super() 1. 참조변수super ≒ 참조변수this -객체 자신을 가리키는 참조변수. 인스턴스 메서드(생성자) 내에만 존재 -조상의 멤버를 자신의 멤버와 구별할 때 사용 참조변수super 인스턴스메서드(or생성자) 내에서만 사용 조상멤버와 자신멤버를 구별하기 위해 사용 참조변수this static메서드 내에서만 사용 lv와 iv를 구분하기 위해 사용 https://feastforall.tistory.com/29?category=999998 18) 객체지향-생성자 this(), 참조변수 this() 18) 객체지향-생성자 this(), 참조 변수 this() 18-1) 생성자 this() -생성자에서 다른 생성자 호출할 때 사용 Car()의 생성자가 3개 있습니다. .. 2021. 6. 3.
24) 메서드 오버라이딩(overriding), 오버로딩과 오버라이딩 차이 24) 메서드 오버라이딩(overriding), 오버로딩과 오버라이딩 차이 1. 정의 [override ⓥ덮어쓰다] -상속받은 조상의 메서드를 자신에 맞게 변경하는 것 2. 예제 Point클래스는 getLocation이라는 메서드가 있습니다. Point3D는 Point를 상속받았네요. Point3D는 상속받은 Point클래스에서 getLocation메서드를 오버라이딩 할겁니다. 내용을 살짝 추가해서 만드는 겁니다. 선언부는 절대 변경 불가이고, 구현부만 변경 가능합니다. (선언부와 구현부를 모르시는 분들은 이것부터 보세요) https://feastforall.tistory.com/20?category=999998 9) 객체지향-메서드의 정의, 메서드의 선언부와 구현부 9) 객체지향-메서드의 정의, 메서드.. 2021. 6. 3.
23) Object클래스 23) Object클래스 1. 정의 -모든 클래스의 조상 2. 특징 -부모가 없는 클래스는 자동으로 Object클래스를 상속받게 된다. -모든 클래스는 Object클래스에 정의된 11개의 메서드를 상속받는다(toString(), equals(Object obj), hashCode() 등등) 3. 예시 -부모가 없는 클래스는 자동으로 Object클래스를 상속받게 된다. Tv클래스는 부모를 상속받지 않으니, 자동으로 Object를 상속받게 된다. SmartTv는 부모클래스 Tv를 상속받는다. -모든 클래스는 Object클래스에 정의된 11개의 메서드를 상속받는다(toString(), equals(Object obj), hashCode() 등등) toString이라는 메서드를 만들지 않았지만, 자동으로 Obj.. 2021. 5. 31.
728x90
반응형