클래스(객체), 메소드

2023. 12. 5. 22:06Daily Codig Reminder

배열복사

int []xxx =Arrays.copyOf(num2, num2.length);

for (int i : xxx){

sysout(i);

}

int [] xxx2 = Arrays.copyOf(num2,3);

for (int i : xxx2) {

sysout(">>>"+i);

}

 

클래스

중요★ ★ ★ ★ ★

지정자 class 정의

[인스턴스 변수정의]

[메소드 정의]

[생성자 정의]

 

 

현실 세계의 학생 개체에서 뽑은 학생클래스

public class Student {

1. 멤버 변수, 인스턴스 변수

1) 선언위치 : 함수 안이 아닌 클래스 블럭

2) 반드시 클래스 new 객체 생성 후 사용

3) 객체 생성시 각 타입으로 자동 초기화

int => 0, 실수 => 0.0, char => 공백, boolean=> false ,참조변수 => null

4) 변수의 사용은 new 에 사용한 참조변수 , 멤버변수 명으로 사용

public String name; // 어느 패키지 에서나 자유롭게 변수 사용가능

public int age;

public String adress;

 

public class TestStudent {

public static void main(String [] args){

 

//클래스명 변수명 = new 클래스명 ();


//1. 클래스 객체 생성

Student stu = new Student();
System.out.println(stu);
System.out.println(stu.name);
System.out.println(stu.age);
System.out.println(stu.address);

 

//2. 참조변수를 이용한 멤버변수 저장

stu.name="홍길동";
stu.age=20;
stu.address="서울";
System.out.println(stu);
System.out.println(stu.name);
System.out.println(stu.age);
System.out.println(stu.address); //학생 1번 객체 저장완료

Student stu2 = new Student();
stu2.name="이순신";
stu2.age=44;
stu2.address="전라";
System.out.println(stu2);
System.out.println(stu2.name);
System.out.println(stu2.age);
System.out.println(stu2.address); //학생 1번 객체 저장완료

Student stu3 = new Student();
stu3.name="유관순";
stu3.age=19;
stu3.address="경기";
System.out.println(stu3);
System.out.println(stu3.name);
System.out.println(stu3.age);
System.out.println(stu3.address);
stu=stu3;
System.out.println(stu);
System.out.println(stu.name);
System.out.println(stu.age);
System.out.println(stu.address); } }

 

//객체 생성시 멤버 변수 초기값 설정

String name="설정안됨";
String address="주소설정안됨";
int age =1;

 

4.3 생성자 (constructor)

//생성자 (constructor) 영역- 객체 생성시 멤버변수의 초기화 및 설정시 사용

/함수영역, 메소드 영역

 

sysout("기본생성자호출");

this.name="기본 생성자에서 설정한 name";

this.address="기본 생성자에서 설정한 address";

this.age=1;

-> 여기서 설정하나 위에서 설정하나 상관없음 대신에 설정안하면 초기값으로 돌아감.

 

String name= "미정";

int age= 1;

public Student 2(){

sysout("기본 생성자 호출");

int age= 10;

name ="미정";

this.age =1; //멤버변수 사용

}

 

private name =" 미정";// 깉은 클래스 안에서만 사용 가능

 

public class Student {

String name;

int age; 

String address;

public Student(){

sysout("기본 생성자 호출");

}// 기본생성자 

//1. 동일 이름의 생성자 에러

//2. 오버로딩 : 동일 이름의 생성자에 매개변수를 다르게 선언하여 구분함 . 에러아님

public Student (String name, int age, String address){
}}

 

public class Student {

//이름, 나이 생성시 총해 설정 , 주소는 "서울"로 설정

 String name;

int age;

String address="서울";

public Student (String name, int age, String address){

sysout ("3개짜리 생성자 호출");

this.name= name;

this.age=10;

this.address=address;

}

public Student (String name) {
System.out.println("1개짜리 생성자 호출");
this.name=name;
this.age=10;
//this.address="서울";
} public Student(String name ,int age) { → age name 순서 바꿔도 ㄱㅊ
System.out.println("2개짜리 생성자 호출");
this.name=name;
this.age=age;
//this.address="서울";
} public Student () {
System.out.println("기본생성자 호출"); } }

 

public class TestStudent {

public static void main (String[]args){

Student stu = new Student();

sysout(stu.name+"\t"+stu.age+ "\t"+stu.address);
Student stu1= new Student("홍길동");// 기본생성자 호출
System.out.println(stu1.name+"\t"+stu1.age+"\t"+stu1.address) ;
Student stu2= new Student("홍길동1", 20);// 기본생성자 호출 System.out.println(stu2.name+"\t"+stu2.age+"\t"+stu2.address);}}

 

기본생성자 호출
null 0 서울 1
개짜리 생성자 호출
홍길동 10 서울
2개짜리 생성자 호출
홍길동1 20 서울

 

메소드

[지정자] 리턴타입 메서드명 ([파라미터]){

//메서드가 처리하는 실행문

[return 결과값],

}

 

public class Student{String name;int age;String address;public Student(){sysout("기본생성자호출");}
//함수영역
//new 객체생성 후 참조변수 함수이름으로 호출 사용//호출 함수 종료 후 호출한 곳으로 돌아가 나머지가 수행됨//접근 제한자 리턴타입 (리턴이 없을 경우 void) 함수명 (매개변수){}

 

//1.리턴없고 매개변수 없음 => 단수 호출public vooid test1(){sysout("test1 호출됨");}

 

//2. 리턴 없고, 매개변수 있는경우public void test2(int a){
sysout("test2 a="+a);

 

//3. 리컨없고 매개변수 여러개인 경우public void test3(int a, int b, String symbol){// +,- 판단 후 연산결과 출력String mesg="";if(symbol.equals("+"))mesg="test3 a+b="+(a+b);

else if (symbol.equals("-")) {
mesg="test3 a+b="+(a+b);
} else mesg="다른 연산자를 적어주세요.";
System.out.println(mesg); //test3에서 출력 } } }

 

public class Test {
public static void main(String[] args) {
// 객체 생성
System.out.println("main시작");
Student stu = new Student();
stu.test1();
stu.test2(10);
System.out.println("main종료"); } }

 

//4. 리턴값(리턴타입과 일치시켜야 함) 이 있고 매개변수 없음

public int test4(){

int data =100;

sysout("test4 호출");

return data; //호출 곳으로 리턴 = 리턴타임과 일치해야 됨.

//sysout("test4 호출"); // 사용못함

}

public int test41() {
int data=100;
int data2=200;
System.out.println("test41 호출");
return data; //호출항 곳으로 리턴 = 리턴 타입과 일치해야 됨.
//System.out.println("test4 호출"); //사용못함 }

 

//4.1 public String test5() {
String data="hello";
System.out.println("test5 호출");
return data; }

 

//5. 리턴타입 있고 매개변수가 있는경우
public String test6 (int a, int b, String symbol){ {
String mesg="";
if (symbol.equals("+"))
mesg ="test2 a+b="+(a+b);
else if (symbol.equals("-")) {
mesg="test3 a+b="+(a+b);
} else
mesg="다른 연산자를 적어주세요.";
System.out.println(mesg);
return mesg; } }

 

//6. 리턴없고 매개변수가 객체인경우
public void test7 (Person p1) {
System.out.println("test7 호출");
System.out.println(p1.pname+"\t"+p1.pgender);

}

 

//8. 객체리턴, 매개변수가 없는경우
public Person test8() {
System.out.println("test 호출");
Person p = new Person("홍길동", "남");
return p; }

 

//9. public Person test9(String name, String gender) {
System.out.println("test9 호출");
Person p = new Person(name, gender);
return p;
} public Person test9() {
return null;
}
// public void test9() {
// // } -> 안됨.

 

//int receivedata = stu.test4();
//String receivedata2 = stu.test5();
//System.out.println("main안에서 "+ receivedata);
//System.out.println("main안에서 "+ receivedata2);
// String mesg= stu.test6(10,20,"+");
//7.
// Person p = new Person ("홍길동","남");
// stu.test7(p);
// //8.
// Person p1=stu.test8();
// System.out.println(p1.pname+"\t"+p1.pgender);
// System.out.println("main종료");
//9. test9
//메인에서 홍길동, "남"을 인자로 저장
//test9는 받은뎅터로 Person객체 생성후 리턴
//메인에서 Person 객체 정보 출력
Person p1=stu.test9("홍길동", "남");
System.out.println(p1.pname);
System.out.println("main종료"); }

 

public class Test {
public static void main(String[] args) {
Student s = new Student ("A", 10, "서울","1111");{
System.out.println(s);//주소
System.out.println(s.toString());
//참조변수 s == s.toString ()으로 자동코드가 생성됨. } } }

 

 

public void setAge(int age){
System.out.println("setage 호출");
if (age<120) this.age=age;
else System.out.println("잘못된 나이입니다.");
} → 이렇게 해서 나이를 150으로 결정하면 150으로 안나오고 원래 나이로 나옴.

 

public class Student {

//1. 멤버변수영역 → set get 각 하나씩해서 6개
String name;
int age;
String addr;
//2. 생성자영역 public Student(String name, int age, String addr) {
super();
this.name = name;
this.age = age;
this.addr = addr;
}
public Student() {
super();
// TODO Auto-generated constructor stub }
//3. 함수영억 public void setName(String name) {
System.out.println("setname 호출");
this.name=name;
}
public void setAge(int age){
System.out.println("setage 호출");
if (age<120) this.age=age;
else System.out.println("잘못된 나이입니다.");
} public void setAddr(String addr){
System.out.println("setaddr 호출");
this.addr=addr;
} //getXXX 영역
public String getName() {
System.out.println("getname 호출");
return this.name;
} public int getAge() {
System.out.println("getage 호출");
return this.age;
} public String getAddr() {
System.out.println("getaddr 호출");
return this.addr;
} @Override
public String toString() {
return "Student [name=" + name + ", age=" + age + ", addr=" + addr + "]";
} } Student s =new Student("A", 10, "서울");
System.out.println( s.getName()+"\t" +s.getAge()+"\t" +s.getAddr());

public class Student {

//1. 멤버변수 영역

private String name;

private int age;

public Student(String name, int age) {

super();

this.name = name;

this.age = age;

}

public Student() {

super();

// TODO Auto-generated constructor stub

}

@Override

public String toString() {

return "Student [name=" + name + ", age=" + age + "]";

}

public void setName(String name) {

System.out.println("setname 호출");

}

public void setAge(int age) {

System.out.println("setage 호출");

}

public String getName() {

System.out.println("getname 호출");

return this.name;

}

public int getAge() {

System.out.println("getage 호출");

return this.age;

}

}

 

public class Test {
public static void main(String[] args) {
Student s1 = new Student("홍길동", 10);
System.out.println(s1.getName() + "\t"+s1.getAge());
s1.setName("김길동");
System.out.println(s1);
Student s2 = new Student("이순신", 20);
System.out.println(s2);
s2.setAge(30);
System.out.println(s2.getName() +"\t"+ s2.getAge()); }}

'Daily Codig Reminder' 카테고리의 다른 글

static, 클래스들의 관계  (1) 2023.12.06
메소드  (1) 2023.12.06
배열  (0) 2023.12.04
문장  (1) 2023.11.30
식별자와 데이터형, 연산자  (0) 2023.11.29