본문 바로가기

PL(ProgrammingLanguage)/JAVA

(111)
인터페이스(interface) 사용 인터페이스를 정의할 때는 그 객체를 선언하기 전에 이 객체가 어떤 어떤기능들을 갖고 있으면 좋을까?하는 이런 기능들을 모아놓은 것이다라고 생각하면 된다. 그런데 그기능들을 정의만 했지, 실제 구현을 하지않았기 때문에 인터페이스만 갖고 무언가를 사용할 수는 없다. 그래서 이런 인터페이스를 반드시 구현해서 사용해야만 한다. LedTV.java(interface인 TV를 구현, implements) package Java02; // class LedTV를 정의하는데 이 LedTV는 인터페이스 TV를 구현하겠다라는 의미 // 이 의미는 TV가 가진 기능들을 LEDTV도 갖게하겠다라는 의미와 같다. public class LedTV implements TV{ @Override public void turnOn()..
인터페이스(interface) 정의 우리는 객체를 만들 기 전에 그 객체가 어떤 기능을 가지고 있을까? 에 대하여 먼저 고민해야 한다. 만약, 우리가 TV라는 객체를 만든다고 가정해보자. 우리는 TV가 어떤 기능을 가질까라는 고민을 하게 될 것이다. 기본적으로 TV의 기능으로 전원을 켜고 끄는 기능, 볼륨 조절 기능, 채널 변경 기능도 꼭 있었으면 좋겠다. TV를 어떻게 만들지 내부적으로 내가 전원을 켰을 때, 어떤 식으로 구현이 되어 켜지는지 모르지만 이런 기능들은 필요해. 라고 생각할 수 있다. 그래서 꼭 필요한 기능들, 무슨 기능들이 있으면 좋을까?라는 고민을 할 수 있을 텐데 이를 구현은 하지 않고, 그 기능들만 쭉 선언해서 가지고 있는 것을 "interface(인터페이스)"라고 한다. 인터페이스: 서로 관계가 없는 물체들이 상호 ..
[프로그래머스] 클래스형변환 실습(2) Car.java public class Car{ public int gas; } Suv.java public class Suv extends Car{ } Truck.java public class Truck extends Car{ } Bus.java public class Bus extends Car{ } GasStraintion.java(수정 전) public class GasStation{ public static void main(String[]args){ GasStation gasStation = new GasStation(); //gasStation인스턴스 생성 Suv suv = new Suv(); //suv 인스턴스 생성 Truck truck = new Truck(); //truck 인스턴스 ..
클래스형변환 클래스 형변환 부모타입으로 자식객체를 참조하게 되면 부모가 가지고 있는 메소드만 사용할 수 있다. 자식객체가 가지고 있는 메소드나 속성을 사용하고 싶다면 형변환 해야 한다. 형변환 Car6.java public class Car6{ public void run(){ System.out.println("Car6의 run메소드"); } } Bus2.java public class Bus2 extends Car{ public void ppangppang(){ System.out.println("빵빵."); } } BusExam02.java package Java02; public class BusExam02 { public static void main(String[] args) { Car6 c = new B..
오버라이딩(Overriding) 오버라이딩(Overriding) 부모가 가지고 있는 메소드와 똑같은 모양의 메소드를 자식이 가지고 있는 것. 즉. 오버라이딩이란 메소드를 재정의 하는 것이다. 부모가 물려준 기능이 내가 필요하기는 하지만 그 기능을 그대로 사용하는 게 별로 좋지 않을 때. 부모가 물려준 메소드를 자식이 다시 정의해서 사용하는 것을 오버라이딩이라 한다. 요약. 부모클래스의 메소드를 자식클래스에서 재정의하여 사용하는 것 메소드 오버라이딩 Car 클래스를 상속받은 Bus 클래스는 부모클래스가 가진고 있는 run() 메소드를 잘 사용한다. Car5.java(부모클래스) //run 메소드를 가지고 있는 Car클래스 public class Car5{ public void run(){ System.out.println("Car5의 r..
super & 부모생성자 super와 부모생성자 class가 인스턴스화 될 때 생성자가 실행되면서 객체의 초기화를 한다. 그때 자신의 생성자만 실행이 되는 것이 아니고, 부모의 생성자부터 실행된다. Car4.java ( 부모생성자 ) package Java02; public class Car4 { // Car4클래스의 기본생성자 public Car4(){ System.out.println("Car4의 기본생성자입니다."); } } Truck.java ( 자식생성자 ) package Java02; //Car4를 상속받은 Truck 클래스 public class Truck extends Car4{ //Truck이라는 클래스의 기본생성자 public Truck(){ System.out.println("Truck의 기본생성자입니다.")..
추상클래스 추상 클래스란 구체적이지 않은 클래스를 의미 독수리, 타조는 구체적인 새를 지칭하는데 새, 포유류 같은 것은 구체적이지 않다. 이런 것을 구현한 클래스를 추상 클래스라고 한다. 이렇게 모호한 단어들을 가진 클래스들은 부모로서의 역할은 수행할 수 있지만, 객체는 될 수 없다. 객체가 될 수 있는 것은 구체적인 클래스들만 가능하다. 추상 클래스 정의하기 추상 클래스는 클래스 앞에 abstract 키워드를 이용해서 정의한다. 추상 클래스는 미완성의 추상 메소드를 포함할 수 있다. 추상 메소드란, 내용이 없는 메소드 이다. 즉 구현이 되지 않은 메소드이다. 추상 메소드는 리턴 타입 앞에 abstract라는 키워드를 붙여야 한다. 추상 클래스는 인스턴스를 생성할 수 없다. package Java02; // 추상클..
접근제한자 클래스는 필드와 메소드를 가진다. 필드와 메소드를 가진다해서 아무것이나 가지고 있으면 안된다. 수학과 관련된 클래스라면 그와 관련된 것을 가지고 있어야할 것이고, 날짜와 관련된 클래스라면 날짜와 관련된 속성이나 메서드를 가지고 있어야할 것이다. 이런 특징을 캡슐화라한다. 캡슐화: 관련된 것을 잘 모아서 가지고 있는 것을 의미한다. 접근제한자 접근 제한자란 클래스 내에서 멤버의 접근을 제한하는 역할 접근제한자의 종류 public : 어떤 클래스든 접근할 수 있다는 것을 의미 protected : 자기 자신, 같은 패키지, 서로 다른 패키지다 하더라도 상속받은 자식 클래스에서는 접근할수 있다는 것을 의미 private : 자기 자신만 접근할 수 있다는 것을 의미 접근제한자를 적지 않으면 default접근 지..