여러 서브클래스들의 템플릿을 정의할때 추상클래스를 사용한다. 다른 클래스가 작동할수있는 룰을 정의할때 인터페이스를 사용한다. SOLID 원칙 :객체지향 설계에서 지켜줘야 할 5개의 원칙을 말한다. 1. SRP(Single Responsibility Principle) 단일 책임 원칙 :객체는 단 하나의 책임만 가져야 한다는 원칙 흔히 함수는 하나의 기능만 수행하도록 구현되어야 하는데, 여기서 예를들면 Calculator() 함수가 덧셈,뺄셈,곱셈,나눗셈을 모두 한다면 이는 좋은 설계가 아니다. 덧셈,뺄셈,곱셈,나눗셈이 각각 함수로 정의되어 있어야 유지보수가 쉬울 것이다. 마찬가지로 Calculator 객체가 있을 때, Calculator 객체는 덧셈,뺄셈,곱셈,나눗셈만 할 수 있어야 한다. 즉, 사칙연산..
인공지능 교육/Java
생성자 public Class Book { String title; String author; int price; public Book() { } } 생성자는 클래스와 이름이 같은데 코드를 가지고 있다. 보통 우리는 앞선 예제를 할 때 위와 같이 따로 코딩을 해주지 않았다. 이럴시에 JVM이 자동으로 생성해준다. 생성자는 클래스와 이름이 같고 리턴타입이 없다. 생성자의 목적은 객체를 만들고 주로 필드의 값을 초기화 할때 사용한다. 위와 같이 오버로딩을 이용하여 생성자를 이용한다. 여기서 setter와 무슨 차이가 있냐고 물어볼수 있는데 생성자는 초기값을 설정하는 것이며 setter는 해당 변수에 접근해 변수를 바꿔주는 의미이므로 서로 다르다고 볼 수 있다. 위에서 생성자를 따로 만들지 않았을 때, JVM..
인스턴스변수는 오버라이딩 대상이 아니다 다형성 먼저, Head First Java 책의 예제를 이용한다. 위의 사진처럼 상속을 이용하여 코딩을 했다고 가정하자. Animal 클래스 하위 클래스들 맨위의 예제와 같이 위와 같은 클래스들을 구성해보았다. 이제 다형성을 증명하기 위해 메인클래스에서 다음과 같이 실행해준다. 최상위 클래스에서 이미 정의한 메소드를 하위 클래스에서 재정의하여 사용했다. (오버라이딩) 그후 Animal은 자식클래스에서 재정의된 메소드를 호출했다. 아래의 코드를 살펴보자. Animal w = new Lion(); Animal타입으로 Lion객체를 생성했다. 그후 실행결과로 보면 Lion 클래스에 있는 메소드를 직접가져와 사용했다. 예를들어, Animal w = new Hippo(); ..
인스턴스 변수는 초기값을 따로 정하지 않아도 정해져있다. 로컬변수는 초기값을 주고 사용해야 한다. for-each 구문 for(int i=0; i 옵션 -> 폴더 및 검색옵션 변경 -> 보기 탭 -> 알려진 파일 형식의 파일 확장명 숨기기 체크해제 이후에 jarfix 프로그램을 다운해준다. johann.loefflmann.net/en/software/jarfix/index.html Jarfix Jarfix 3.0.0 fix the jar association on Windows Description If you doubleclick on a jar file, and your Java application does not start, your .jar association has been hijacked...
A Java program is a pile of classes 자바는 클래스들의 파일집합체이다 상속,오버라이드(@override) 오버라이드란 ? 부모 클래스의 메소드를 사용할 수 있어도 자식 클래스에서 변경해야 할 상황이 발생한다면 오버라이드를 통해 자식 클래스에서만 새로운 기능으로 재정의 public abstract class Shape{ public void rotate(){ System.out.println("빙글빙글") } public void playsound(){ System.out.println("도형에 맞는 소리를 내어요"); } 여기서 Shape는 최상위 클래스이며 상속하는 내용들 뿐이기에 추상적인 클래스가 되게된다. 그래서 abstract를 써야한다. 그럼, 여기서 playsound..