본문 바로가기

Languages/Java

(9)
[Java] 인터페이스, 추상클래스, enum 인터페이스, abstract 클래스 사용 이유 : - 설계시 선언해두면 개발할 때 기능 구현에 집중 가능 - 공통적인 인터페이스, abstract 클래스를 선언해 놓으면, 선언과 구현 구분 가능. Interface 인터페이스 내부에 선언된 메소드들은 몸통이 있으면 안됨. 선언만 하기. 클래스에 인터페이스 적용시 public class 클래스이름 implements 인터페이스나열. abstract 클래스 클래스 선언 시 class 앞에 abstract 추가. public abstract class sample{} abstract로 선언된 메소드가 하나라도 있으면, 그 클래슨느 반드시 abstract로 선언되어야함 abstract클래스는 몸통이 있는 메소드가 0개 이상 있어도 괜찮음. 인터페이스와 달리 st..
[Java] 형변환, 다형성 형변환 자식 타입 객체->부모 타입 객체 (자동가능) 부모 타입 객체->자식 타입 객체. 부모 타입의 실제 객체가 자식 타입이어야함 Child child=new Child(); Parent parent=child; Child child2=(Child)parent; 객체 instanceof 클래스(타입) : 객체 타입 구분하는 메소드 다형성 하나의 객체가 여러 타입을 가질 수 있음 형 변환하더라도 실제 호출되는것은 원래 객체에 있는 메소드가 호출됨.
[Java] 상속 상속 자식 클래스는 클래스 선언시 extends 다음에 부모 클래스 이름을 적어줌 자식 클래스의 생성자가 호출되면 자동으로 부모 클래스의 매개 변수 없는 생성자가 실행됨. 자바는 다중 상속이 안됨. extends 뒤에 클래스를 하나만 써야함. 부모 클래스에 기본생성자를 만들어놓지않고 매개변수를 받는 생성자만 만들어놓으면, 자식 클래스의 생성자가 실행될 때 에러 발생. 자식 클래스의 생성자가 실행될 때 부모 클래스의 기본 생성자를 찾기 때문 ->super()사용. super(null); super() 메소드처럼 super()로 사용시 부모 클래스의 생성자를 호출한다는 것을 의미. super.printName()으로 사용시 부모 클래스에 있는 printName()이라는 메소드 호출을 의미 생성자에서는 sup..
[Java] 패키지, 접근제어자 패키지 클래스를 체계적으로 관리하기 위한 도구. 작성한 클래스들을 구분 짓는 폴더와 비슷함. 클래스들을 분류하지 않아 이름이 중복되거나 클래스의 기능이 혼동되는 상황 방 패키지의 물리적인 형태는 파일 시스템의 폴더이지만, 폴더의 기능만 하는 것이 아니라 클래스의 일부분임 패키지 선언문 : "package c.javapackage;" 소스의 가장 첫 줄에 있어야만함. package 선언 위에 주석, 공백은 상관없음. 하지만 다른 자바 문장이 있으면 컴파일 오류 패키지 선언은 소스 하나에는 하나만 있어야함. 소스 파일이 두개의 폴더에 한번에 존재할 수 없기 때문 패키지 이름과 위치한 폴더 이름이 같아야함. 패키지 이름 규칙 java로 시작하면 안됨 모두 소문자로. 자바의 예약어x *컴파일 할 때 javac ..
[Java] 매개 변수 지정 배열을 사용하지 않고 임의의 매개 변수를 넘겨줄 수 있음. *배열 사용시 public class ReferenceTypes{ public void calculateNumbers(int[] numbers) { //생략 } } 하지만 매개 변수로 넘겨 줄 때 계산할 숫자들을 모두 배열로 만든 뒤 넘겨주어야함. *배열 사용x. "타입...변수명" (이때 ...사이에 공백 없어야됨) public class ReferenceTypes{ public void calculateNumbers(int...numbers) { //생략 } } *예) public class ReferenceTypes { public void calculateNumbers(int...numbers){ int total=0; for(int nu..
[Java] Static과 Static 블록 static 고정된 이란 의미. 정적 멤버는 클래스에 고정된 멤버로, 객체를 생성하지 않고 사용할 수 있음. 정적 멤버는 객체에 소속된 멤버가 아니라 클래스에 소속된 멤버이기 때문에 클래스 멤버라고도 함. 객체마다 가지고 있을 필요성이 없는 공용 데이터라면 정적 필드로 선언하는 것이 좋음. 메소드의 경우 인스턴스 필드를 이용하지 않는다면 정적 메소드로 선언함. // 스피커 클래스 public Calculator{ String color; //인스턴스 필드 - 객체마다 색이 다름 static double pi = 3.14156; //정적 필드 - 객체마다 값이 같으므로 공용 데이터 void setColor(String color) {this.color = color;} //인스턴스 메소드 - 인스턴스 필드..
[Java] 배열 기본 자료형의 배열 선언 int [] lottoNumbers int lottoNumbers[]; 배열 변수를 정의할 때 대괄호 안에는 아무것도 써주면 안됨. 대괄호는 타입과 변수 사이에 위치해도되고, 변수명 뒤에 위치해도 되지만 보통 타입과 변수명 사이에 대괄호 넣는것을 권장 배열 초기화 int [] lottoNumbers = new int[7]; //7은 배열의 크기 int [] lottoNumbers; lottoNumbers = new int[7]; int 자체 : 기본 자료형 int [] : 참조 자료형 ▶참조 자료형의 객체를 생성할 때 반드시 new 사용. 배열도 참조 자료형이기 때문에 new붙여야함. 배열의 기본값 기본 자료형 배열의 기본값은 각 자료형의 기본값과 동일. 지역 변수(메소드 내에서..
[Java] 변수, 자료형 변수 - 지역 변수 - 매개 변수 메소드나 생성자에 넘겨주는 변수. 메소드가 호출될 때 생명이 시작되고, 메소드가 끝나면 소멸됨. (정확히는 호출될 때 시작하진 않음) - 인스턴스 변수 메소드 밖에, 클래스 안에 선언된 변수, 앞에는 static이라는 예약어가 없어야 함. 객체가 생성될 때 생명이 시작되고, 그 객 체를 참조하고 있는 다른 객체가 없으면 소멸됨. - 클래스 변수 인스턴스 변수처럼 메소드 밖에, 클래스 안에 선언된 변수 중에서 타입 선언 앞에 static 이라는 예약어가 있는 변수. 클래 스가 생성될 때 생명이 시작되고, 자바 프로그램이 끝날 때 소멸됨. public class VariableTypes{ int instanceVariable; static int classVariable; ..