・절차지향 C언어
・객체지향
[계산] class Song { String album; String artist; int year; String country; Song(String album, String artist, int year, String country) { this.album = album; this.artist = artist; this.year = year; this.country = country; } void show() { System.out.println(year + country + artist + album); } } public class Test20 { public static void main(String[] args) { Song song = new Song("Dancing Queen", "ABBA", 1978, "스웨덴"); song.show(); } }
[결과값] 1978스웨덴ABBADancing Queen
[계산] public class Test20 { public static void main(String[] args) { com.global1.ex.Test19 c1 = new com.global1.ex.Test19(); com.global2.ex2.Test19 c2 = new com.global2.ex2.Test19(); } }
[결과값] baby입니다.3 baby입니다.2
모든 자바.class는 반드시 패키지명이 존재한다.
패키지명이 선언이 안되어 있는 경우 디폴트 값이 자동으로 선언된다.
[계산] import com.fxmx.simple.*; // *는 패키지로 묶인 전체 클래스에 대한 패키지 선언 //import com.wxfx.smart.*; //============================== public class Test20 { public static void main(String[] args) { Circle3 c1 = new Circle3(); // import를 사용하였기 때문에 주소를 기재하지 않아도 끌고 온다. // com.wxfx.smart.Circle3 c2 = new com.wxfx.smart.Circle3(); } }
[결과값] A회사 입니다. com.fxmx.simple
객체 자기 자신을 가리키는 용도
this 생성자에서 다른 생성자를 호출할 때 쓰임
[계산] //this의 이해 class ThisTest { String title; String artist; ThisTest() { System.out.println("디폴트 생성자 입니다."); } ThisTest(String title, String artist) { this(); // ThisTest()를 의미한다. this.title = title; this.artist = artist; // show(); 같은 class 내에서는 호출 가능하다. } void show() { System.out.println(title + "::" + artist); } } public class This { public static void main(String[] args) { ThisTest a = new ThisTest("Dancing queen", "ABBA"); // 객체생성 // a.show(); System.out.println(a); } }
[결과값] 디폴트 생성자 입니다. Dancing queen::ABBA ThisTest@4926097b
[계산] //this의 이해 //객체 자기 자신을 가리키는 용도 //this 생성자에서 다른 생성자를 호출할 때 쓰임 class TV { int inch; String color; TV(int inch, String color) { this.inch = inch; this.color = color; } int getSize() { return inch; } String getColor() { return color; } void show() { System.out.println(this.inch + "인치" + this.color + "색입니다."); } void compareSize(TV compareSize) { if (inch > compareSize.inch) { System.out.println("내가 큽니다."); } else if (inch == compareSize.inch) { System.out.println("나하고 내가 같습니다."); } else { System.out.println("내가 작습니다."); } } } //======================================================== public class This { public static void main(String[] args) { TV tv = new TV(10, "blue"); TV tv2 = new TV(20, "blue"); System.out.println(tv.getSize() + "인치 입니다"); System.out.println(tv.getColor() + "색입니다"); tv.show();// 10인치 blue 색 입니다. tv.compareSize(tv); // 같습니다. tv2.compareSize(tv); // 내가 큽니다. } }
[결과값] 10인치 입니다 blue색입니다 10인치blue색입니다. 나하고 내가 같습니다. 내가 큽니다.
*중요*
OOP(object-oriented programming) 4가지 특징
1.정보은닉(information hiding) : 클래스 내부에서 어떤 식으로 처리가 이루어지는지는 알지 못하도록 설계된다.(함수 원리를 몰라도 사용할 수 있도록 하는 것)
2.상속(inheritance)
3.다형성(polymorphism) ⇒ 자바 실무에서 가장 중요함
4.캡슐화(encapsulation)