객체(instance)란?
'클래스'라는 틀을 통해 만들어낸 실체를 말한다.
객체를 생성한다는 것은 해당 클래스의 .class 파일을 메모리에 올린다는 것을 의미한다.
Rectangle rec = new Rectangle();
public class Rectangle {
int height;
int width;
public int getHeight() {
return height;
}
public void setHeight(int height) {
this.height = height;
}
public int getWidth() {
return width;
}
public void setWidth(int width) {
this.width = width;
}
public int getArea() {
return width * height;
}
}
클래스(Class)란?
객체(Object)란?
소프트웨어 세계에 구현할 대상
클래스에 선언된 모양 그대로 생성된 실체
특징
‘클래스의 인스턴스(instance)’ 라고도 부른다.
객체는 모든 인스턴스를 대표하는 포괄적인 의미를 갖는다.
oop의 관점에서 클래스의 타입으로 선언되었을 때 ‘객체’라고 부른다.
class Total {
int sum;
public Total(int num){
int sum = 0;
for(int i=1; i<=num; i++) {
sum += i;
}
this.sum = sum;
}
int getSum() {
return sum;
}
}
public class TotalTest {
public static void main(String[] args) {
Total total = new Total(10);
System.out.println(total.getSum());
}
}
StraPrint strPrint = new StarPrint();
strPrint.printTriangle(3);
System.out.println();
strPrint.printReverseTriangle(3);
class StarPrint{
int num;
public void printTriangle(int num) {
this.num = num;
for(int i=1; i<=num; i++) {
for(int j=1; j<=i; j++) {
System.out.print("*");
}
System.out.println();
}
}
public void printReverseTriangle(int num) {
this.num = num;
for(int i=1; i<=num; i++) {
for(int j=num; j>=i; j--) {
System.out.print("*");
}
System.out.println();
}
}
}
public class strPrint {
public static void main(String[] args) {
StarPrint strPrint = new StarPrint();
strPrint.printTriangle(3);
System.out.println();
strPrint.printReverseTriangle(3);
}
}
생성자란?
객체를 생성할 때 호출하는 메서드 비슷한 것을 말함.
주로 일반 멤버변수의 초기화나 객체를 생성할때 실행하는 작업을 정리한다.
생성자 형태
class Person{
String name;
public Person(){ //생성자명은 class명과 똑같아야함
name = '홍길동'; //생성자의 주요역할은 멤버변수의 초기화
}
}
디폴트 생성자란?
생성자를 정의하지 않았을 때 자바 컴파일러에서 자동으로 만들어주는 생성자를 디폴트 생성 자라 고한다.
디폴트 생성자는 매개변수가 없고 코드도 없다.
생성자 이름은 **클래스의 이름과 동일해야 한다.
생성자는 **값을 반환하지 않고(return 안함) return type도 표시하지 않는다.
리턴값이 없다는 것은 용도를 제한함을 의미 (연산 등의 용도가 아님.
즉, 생성자의 용도는 값들에 대한 초기화이다.
null은 참조 변수에 대입 했을 때 비어 있음을 의미한다.
참조 변수에는 주소값이 들어가는데 그곳이 비어 있다는 의미는 아무 곳도 가리키고 있지 않음을 의미한다. (ref가 참조하는 객체가 있었다면 그 관계를 끊는 것을 의미함) 참조 변수를 초기화 할 때 사용한다.
JVM 으로 하여금 해당 객체가 GC에 의한 메모리 해제 되상이 됨을 알리는 역할을 한다.
노래 한 곡을 나타내는 Song 클래스를 작성하라.
Song은 다음 필드로 구성된다.
- 노래의 제목을 나타내는 title
- 가수를 나타내는 artist
- 노래가 발표된 연도를 나타내는 year
- 국적을 나타내는 country
또한 Song 클래스에 다음 생성자와 메소드를 작성하라.
- 생성자 2개: 기본 생성자와 매개변수로 모든 필드를 초기화하는 생성자
- 노래 정보를 출력하는 show() 메소드
- main() 메소드에서는 1978년, 스웨덴 국적의 ABBA가 부른 "Dancing Queen"을 song 객체로 생성하고,
show()를 이용하여 노래의 정보를 다음과 같이 출력하라.
<결과값>
1978년 스웨덴국적의 ABBA가 부른 Dancing Queen
class Song{
String title;
String artist;
int year;
String country;
public Song(int year, String country, String artist, String title) {
this.title = title;
this.artist = artist;
this.year = year;
this.country = country;
}
public void Show() {
System.out.println(year + "년 " + country + " 국적의 " + artist +"가 부른 " + title);
}
}
public class SongTest {
public static void main(String[] args) {
Song song = new Song(1978,"스웨덴","ABBA","Dancing Queen");
song.Show();
}
}
Grade me = new Grade(90, 70, 100);
System.out.println("평균은 "+me.average());
class Grade{
int kor, eng, math;
int sum;
Grade(int k, int e, int m) {
kor = k;
eng = e;
math = m;
this.sum = k + e + m;
}
double average() {
return sum/3.0;
}
}
public class GradeTest {
public static void main(String[] args) {
Grade me = new Grade(90, 70, 100);
System.out.println("평균은 "+me.average());
}
}
다음 main() 메소드를 실행하였을 때 예시와 같이 출력되도록 TV 클래스를 작성하라.
public static void main(String[] args) {
TV myTV = new TV("LG", 2017, 32); //LG에서 만든 2017년 32인치
myTV.show();
}
<출력값>
LG에서 만든 2017년형 32인치 TV
class TV{
String name;
int year;
int size;
TV(String name, int year, int size){
this.name = name;
this.year = year;
this.size = size;
}
void show(){
System.out.println(name + "에서 만든" + year +"년 형 " + size + "인치 TV");
}
}
public class LgTv {
public static void main(String[] args) {
TV myTV = new TV("LG", 2017, 32); //LG에서 만든 2017년 32인치
myTV.show();
}
}
BankAccount ref1 = new BankAccount();
BankAccount ref2 = ref1;
Gugudan gugudan = new Gugudan();
gugudan.printGugu(10); //1단부터 10단까지 출력
gugudan.printGugu(20); //1단부터 20단까지 출력
class Gugudan{
int num;
void printGugu(int num) {
for(int i=2; i<=num; i++) {
for(int j=1; j<=9; j++) {
System.out.println(i + " * " + j + " = " + (i*j));
}
System.out.println();
}
}
}
public class GugudanTest {
public static void main(String[] args) {
Gugudan gugudan = new Gugudan();
gugudan.printGugu(10); //1단부터 10단까지 출력
System.out.println("====================================");
gugudan.printGugu(20); //1단부터 20단까지 출력
}
}