728x90
반응형
728x90
반응형
생성자 안의 객체 생성 시 컴파일 오류 강사님이 Calculator라는 클래스를 정의할 때 클래스 안의 다른 2개의 클래스들을 다른 클래스에서도 선언하기 위해 그 클래스들의 객체를 필드 값에 정의한 내용이다. 이때 나의 질문 내용은 필드값에 객체를 한번에 선언하여 Calculator 라는 클래스를 통해 다른 클래스의 메서드들을 접근하는 것과 생성자에 객체의 주소값을 별도로 메모리에 할당하는 것의 차이점을 여쭤보는것이었다. 강사님은 두개에 별다른 차이점은 없고 컴파일 시 오류가 나지 않지만, 자바 안의 생성자의 목적(값을 초기화) 에 맞게 별개로 객체를 정의하여 생성자에 별도로 정의하는 것이 좋다고 하셨다. 아래는 질문을 드릴 때 사용되었던 코드. Calculator를 실행시키기 위해 사용되었던 Main ..
접근제어자 private private을 넣으면 현재 클래스에서만 접근 가능하도록 데이터의 접근 범위를 제한 따라서 다른 클래스에서 Mart를 선언하여 출력한다고 해도 오류가 발생함 public class Mart { //field private int benefit; // 이윤 private int applenumber; //사과 잔고 private int appleprice; //사과 단가 아무것도 지정안할 경우에는 default값으로 지정되는데 default값은 같은 package내에서 접근이 가능함 public일 경우에는 어디서나 이클립스 안이라면 선언이 가능하다 public class Mart { //field int benefit; // 이윤 public int applenumber; //사과..
객체지향 정의: 객체지향이란 각각의 기능에 맞게 클래스들을 생성하여 프로그램의 기능을 구현하기 쉽게 만들고 나중에 유지보수나 재사용을 쉽게 가능하게 만들어주는 것. 각각의 클래스들을 만들때 필드(멤버변수 IV), 생성자, 메서드(행동, 기능)들을 만들어준다. 사과 판매를 예시로 하여 설명하였는데 필드, 생성자, 메서드를 아래와 같이 선언해준다. 판매자의 입장에서 필요한 멤버변수는 (1)개당 이윤과 (2)현재 사과의 잔고 (3) 사과 단가이기 때문에 필드에 3개의 변수를 선언했다. 필드는 그 클래스의 기능에 필요한 멤버변수를 선언한다 public class Mart { //field int benefit; // 이윤 int applenumber; //사과 잔고 int appleprice; //사과 단가 생..
인터페이스 정의: 추상메서드의 집합 구현된 것이 전혀 없는 설계도 껍데기 모든 멤버가 public static final & public abstract이여야 함 따라서 public static final과 public abstract는 인터페이스 내에서 생략이 가능하다 추상메서드와 인터페이스의 차이점 추상메서드는 생성자, IV, 추상메서드를 가지고 있지만 인터페이스는 찐으로 아무것도 없는 빈 깡통 IV의 보유 여부로 판별 가능 = 인터페이스 IV 없음, 추상 메서드 IV 존재 다만 상수는 가질 수 있음 = final 인터페이스 선언하는 법 클래스와 동일하게 생성 위의 설명과 같이 앞의 public static final 은 interface에서 필수로 적용되야하기 때문에 생략이 가능하다 interfac..
instanceof 참조변수의 형변환을 하기 전에 instanceof 함수를 써서 형변환 가능여부 확인 > 가능하면 true 반환 사용이유: 형변환하기전에 형변환 가능여부를 확인할 때 조상 멤버를 상속받을 때 어떤 인스턴스를 받을 지 알 수 없기 때문에 instanceof로 TV가 가르키는 smartTV 인스턴스로 형변환이 가능한지 확인해야 함 아래와 같이 형변환이 가능하면 true값을 반환하고 불가능하면 false값을 반환 SmartTV smarttv = new SmartTV(); TV tv = new TV(); System.out.println(smarttv instanceof TV); System.out.println(smarttv instanceof SmartTV); System.out.print..
다형성 - polymorphism 조상 타입 참조 변수로 자손 타입 객체를 다루는 것 다만 반대의 경우는 불가능 (자손타입이 조상타입 객체를 가리키는 것) 참조된 인스턴스 멤버의 개수(조상)가 실제 사용 가능한 개수(자손)보다 적기때문에 오류 발생 아래와 같이 객체와 인스턴스 타입이 불일치함을 다형성을 표현하였다고 함 TV t = new SmartTV(); // 객체와 인스턴스 타입이 불일치 SmartTV st = new SmartTV(); 객체와 인스턴스가 불일치함의 의미는 사용할 수 있는 인스턴스 멤버의 개수가 달라진다고 볼 수 있다. 만약 다형성이 아니라면 (객체와 인스턴스가 일치하면) 아래의 코드처럼 TV의 클래스에 들어있는 총 4개의 변수 + SmartTv 클래스의 2개의 변수 = 총 6개를 사..
겹치는 숫자 제거 문제 0-9부터 입력 시 겹치는 숫자가 있으면 false, 없으면 true 반환 일단 string 배열을 scanner로 입력받아서 .split("")으로 개별로 분할한다 받은 문자열을 Arrays.sort()를 사용하여 오름차순으로 정렬 오름차순으로 정렬된 문자열(숫자)를 1번째와 2번째를 비교하여 만약 같다면 겹치는 문자열이 있다는 뜻 따라서 겹치는 문자가 있다면 false를 출력 후 시스템을 종료 겹치는 문자가 없다면 반복문을 탈출하여 true 출력 package CodingTestLv1; import java.util.Arrays; import java.util.Scanner; public class Z_TestforRename2 { public static void main(S..
피보나치 수열 package CodingTestLv1; public class Fibonachi { public static void main(String[] args) { //예) 0, 1, 1, 2, 3, 5, 8, 13 21 34 55 //피보나치 수열이란, 첫 번째 항의 값이 0이고 두 번째 항의 값이 1일 때 //이후의 항들은 이전의 두 항을 더한 값으로 이루어지는 수열을 말한다. int count = 10; for(int i = 0; i