본문 바로가기

개발일지/Java + Spring

(85)
211027 Java - 상속과 오버라이딩, 상속 받고 생성자 호출 방법(3) public class Sample1027_2 { /** * @param args */ public static void main(String[] args) { CaptionTv ctv = new CaptionTv(); ctv.channel = 11; ctv.channelUp(); System.out.println("현재 채널 : " + ctv.channel); ctv.displayCaption("hello java..."); ctv.caption = true; //자막을 켰다. ctv.displayCaption("hello java..."); //여기서부터 찍힘 CaptionTv ctv2 = new CaptionTv(); ctv2.channel = 11; ctv2.channelDown(); ctv2.c..
211027 Java - 초기화 블록 순서, 생성자 없이 인스턴스 블록에서 구현 (2) 초기화 블록 순서 static //클래스 초기화 블록 { System.out.println("static{ }"); } //해당 클래스가 메모리에 한 번 실행될 때 딱 한 번 실행됨 { //인스턴스 초기화 블록 System.out.println("{ }"); } //인스턴스 객체가 생성 되면서 클래스 초기화 되고 얘가 오고 생성자가 그 다음 온다. Sample1027() //생성자 { System.out.println("Sample1027 생성자"); } static{ ... } 클래스 초기화 블록 클래스가 메모리에 올라갈 때 딱 한 번만 실행이 된다. 그러니 클래스 초기화 블록 static{ } 이게 가장 첫번째에 출력이 단 한 번 됨 { } 인스턴스 초기화 블록 객체 생성 시 메모리를 할당 받고 나서..
211027 Java - 생성자를 통한 인스턴스 복사 (1) 생성자를 통한 인스턴스 복사 class Car2 { String color; String gearType; int door; Car2() { this("white", "auto", 4); } Car2(Car2 c) //인스턴스 복사 { color = c.color; gearType = c.gearType; door = c.door; //c를 갖고와서 내거에다가 대입 } //나를 호출할 때 Car2(String color, String gearType, int door) { this.color = color; this.gearType = gearType; this.door = door; } } 일단 클래스 부분만 본다. 패키지 안에 이미 Car 클래스가 있어서 Car2로 클래스를 만들었다. 생성자를 생성할..
메소드 오버로딩 오버로딩(Overloading) 하나의 클래스 내에 같은 이름의 메소드를 여러 개 정의를 한다. 매개변수의 개수 또는 타입이 다르게 구현이 되어야 한다. 반환 타입의 경우 오버로딩을 구현하는데 아무런 영향을 주지 못 함. ptint() 메서드도 이미 오버로딩으로 지정이 되어있다! public static void main(String[] args) { MyMath mm = new MyMath(); System.out.println("mm.add(3, 3) 결과 : " + mm.add(3, 3)); System.out.println("mm.add(3L, 3) 결과 : " + mm.add(3L, 3)); System.out.println("mm.add(3, 3L) 결과 : " + mm.add(3, 3L));..
클래스 - 참조형 반환타입, 같은 클래스 내 클래스/인스턴스 메소드 참조형 인자값과 참조형 반환타입 지금까지는 반환 타입이 int, double과 같은 기본자료형 타입이었지만 이번에는 참조형 타입으로 반환타입을 지정해 봤다. 다른 메소드에서 만든 참조형을 어떻게 메인에서 받아 처리할 수 있을까? 전체 코딩 훑기 public static void main(String[] args) { //참조형 리턴타입 Data d = new Data(); d.x = 11; d.y = 22; Data d2 = copy(d); //d = d2; //d2.x = 33; //d2.y = 44; System.out.println("d.x : " + d.x); System.out.println("d.y : " + d.y); System.out.println("d2.x : " + d2.x); Sys..
211022 Java - 메소드(클래스/인스턴스/기본형/참조형) 배운 걸 정리하기 앞서 클래스=객체=인스턴스에 대해서 다시 한 번 이야기를 해야할 것 같다. 클래스는 한 번 만들어두면 여러 번 반복해서 만들 필요 없이 쉽게 불러다 쓸 수 있다. 클래스의 경우 설계도만 짜놓는 것과 같고 객체의 경우 메인에서 만들어둔 클래스를 부를 때 클래스명에 해당하는 것이다. new 연산자를 이용해 객체 생성을 하는 것이 중요한데 여기서 객체명이 객체의 인스턴스가 되는 것임!! 클래스 메소드와 인스턴스 메소드 public class Sample1024 { public static void main(String[] args) { Sample1024 s1 = new Sample1024(); int x = 5, y = 10; int sum = s1.add(x, y); System.out...
클래스 파일 확인 - 같은 파일에 있는 클래스가 나눠져서 저장? TvSample 클래스에는 Main 메소드가 있다. 그 바로 밑에 다른 클래스를 만들어줬다. 원래는 이렇게 만들지 않는다고 하지만 같은 파일 안에 두 가지 클래스를 만들었다. 이것은 Tv 클래스로 다양한 기능(메소드)들이 들어있다. 한 파일 안에 있는데 클래스 파일이 나누어진다? 해당 자바 파일 오른쪽 클릭 - properties(Alt + Enter) type filter text - Resource - Location : 오른쪽 끝 아이콘 누르기 아이콘을 누르면 Sample2 프로젝트 안에 있는 src 폴더로 간다. 여기엔 java 파일들이 옹기종기 모여있다 파일 위로 올라가서 bin 파일에 들어가야한다. 내가 만들어둔 패키지명이 보임 = 어마맛!! 한 페이지 안에 써두었던 클래스들이 나누어져서 저장..
211021 java - 다차원 배열과 객체 문자 배열인 char 배열과 같은 뜻으로 String 클래스를 이용해서 문자열을 처리하는 이유 String클래스가 char 배열에 기능(메서드)을 추가한 것이라서 그럼.. String str = "JAVA"; 이 사이즈만 자리가 잡힘 str = str + 8; //"JAVA8"이라는 새로운 문자열이 str에 저장이 된다. 출력 : " Java8 " 집을 하나 배정 받아놓고 집청소만 함 int 뿐만 아니라 다른 타입의 배열도 있돠 String[] name = { "kim", "park", "lee" }; int i; for(i=0; i