접근자 class 클래스이름 {
변수; // 속성, 데이터 필드
생성자(); // 기본생성자 - 생략가능
메서드();// 기능
}
package chapter07;
public class Member {
}
.
을 통해 속성, 메서드 접근package chapter07;
public class MemberMain {
public static void main(String[] args) {
Member m = new Member();
Member m2 = new Member();
if (m == m2) {
System.out.println("m개체와 m2객체는 같다.");
} else {
System.out.println("m개체와 m2객체는 같지 않다.");
}
}
}
package chapter07;
public class Car {
// 필드
String color;
String company;
String type;
// 메서드
public void go() {
System.out.println("전진하다.");
}
public void back() {
System.out.println("후진하다.");
}
}
package chapter07;
public class CarMain {
public static void main(String[] args) {
Car tico = new Car();
Car pride = new Car();
tico.color = "화이트";
tico.company = "현대";
tico.type = "경차";
pride.color = "블랙";
pride.company = "기아";
pride.type = "소형";
tico.go();
pride.go();
System.out.println(tico.color);
System.out.println(tico.company);
System.out.println(tico.type);
System.out.println(pride.color);
System.out.println(pride.company);
System.out.println(pride.type);
}
}
package chapter07;
public class CarMain2 {
public static void main(String[] args) {
// Car 타입의 배열객체 생성
Car[] cars = new Car[2];
Car tico = new Car();
Car pride = new Car();
tico.color = "화이트";
tico.company = "대우";
tico.type = "경차";
cars[0] = tico;
pride.color = "블랙";
pride.company = "기아";
pride.type = "소형";
cars[0] = pride;
System.out.println("0번 인덱스 color : "+cars[0].color);
System.out.println("1번 인덱스 color : "+cars[1].color);
cars[0].color = "블랙"; // 0번 인덱스 객체의 color 필드에 "블랙" 대입
System.out.println("0번 인덱스 color : "+cars[0].color);
System.out.println("1번 인덱스 color : "+cars[1].color);
for(Car car : cars){
System.out.println(car.color);
}
}
}
데이터 타입 | 기본값 |
---|---|
정수 타입 | 0 |
실수 타입 | 0.0 |
문자 타입 | '\U0000' |
boolean | false |
참조형 | null |
package chapter07;
public class LocalVarTest {
public static void main(String[] args) {
int n = 0;
{
int a = 10;
}
// int b = a; // error 블럭에서 선언된 a 지역변수
for(int i=0; i<3; i++) {
int j = 3;
}
// int b = i; error for() 선언된 i, for블럭에 선언된 j 지역변수
}
public static void nUse() {
//int k = n; // main()에 선언된 n 지역변수
}
}
package chapter07;
class Avante {
static String company = "현대"; // 클래스 변수
String color; // 인스턴스 변수
}
public class VarEx {
public static void main(String[] args) {
// 클래스 변수 사용
System.out.println("Avante 제조사 : "+Avante.company);
Avante a1 = new Avante();
Avante a2 = new Avante();
// 인스턴스 변수의 값 변경
a1.color = "화이트";
a2.color = "블랙";
// 인스턴스 변수 출력
System.out.println("a1 색상 : "+a1.color);
System.out.println("a2 색상 : "+a2.color);
// 클래스 변수를 인스턴스 객체로 출력
System.out.println("a1 제조사 : "+a1.company);
System.out.println("a2 제조사 : "+a2.company);
// 클래스 변수의 값 변경
a1.company = "기아";
// 클래스 변수의 값 변경 후 클래스변수와 인스턴스변수 출력
System.out.println("Avante 제조사 : "+Avante.company);
System.out.println("a1 제조사 : "+a1.company);
System.out.println("a2 제조사 : "+a2.company);
}
}
package chapter07;
class Local {
String name;
void process() {
name = "홍길동";
}
void printAge1() {
int age = 20; // 지역변수
System.out.println(age);
}
void printAge2() {
int age = 30; // 지역변수
System.out.println(age);
}
}
public class LocalValEx {
public static void main(String[] args) {
Local local = new Local();
System.out.println(local.name); // null
local.process();
System.out.println(local.name); // 홍길동
local.printAge1();
local.printAge2();
// for문 블록 내에서의 변수 선언
for (int i=0; i<10; i++) {
int temp = 0;
temp += i;
}
//System.out.println(temp); // 에러
}
}
..
을 붙임, void printInfo(String ...infos){
System.out.println(infos[0]);
}
package chapter07;
public class VariableArgument {
/**
* Variable Argument Test
*/
void printInfo(String ...infos){
if(infos.length != 0){
for(int i=0;i<infos.length;i++){
System.out.println(infos[i]);
}
}
else{
System.out.println("인자가 없네요.");
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
VariableArgument vt = new VariableArgument();
System.out.println("인자 없이");
vt.printInfo();
System.out.println("인자 하나");
vt.printInfo("aaa");
System.out.println("인자 두 개");
vt.printInfo("aaa","bbb");
System.out.println("인자 세 개");
vt.printInfo("aaa","bbb","ccc");
}
}
package chapter07;
public class Overloading2 {
public static void main(String[] args) {
System.out.println(1);
System.out.println(5.5);
System.out.println((long)100);
System.out.println("홍길동");
System.out.println('a');
System.out.println(true);
System.out.println(new Overloading2());
System.out.println(new int[5]);
}
}
package chapter07;
public class Overloading {
public static void main(String[] args) {
Operator op = new Operator();
System.out.println(op.multiply(4, 3));
System.out.println(op.multiply(4.5, 3.5));
System.out.println(op.multiply(4, 3.5));
System.out.println(op.multiply(4.5, 3));
}
}
class Operator {
int multiply(int x, int y) {
System.out.println("(int, int)");
return x * y;
}
double multiply(double x, double y) {
System.out.println("(double, double)");
return x * y;
}
double multiply(int x, double y) {
System.out.println("(int, double)");
return x * y;
}
double multiply(double x, int y) {
System.out.println("(double, int)");
return x * y;
}
}
package chapter07;
public class StaticMethod {
static int sVar; // static 변수
int iVar; // instance 변수
// static 메서드에선 호출 가능
public static void staticCall() {
System.out.println("staticCall()");
System.out.println("sVar="+ sVar);
//instannceCall(); // error : new 해서만 부를 수 있음
//System.out.println("iVar="+ iVar);// error : new 해서만 사용가능
}
// new 생성 후 호출 가능
public void instanceCall() {
System.out.println("instantCall()");
System.out.println("iVar=" + iVar);
}
public static void main(String[] args) {
// static
staticCall();
System.out.println("main() - staticVar="+StaticMethod.sVar);
System.out.println("main() - staticVar="+sVar); // 같은 클래스 : 클래스명 생략 가능
// new
StaticMethod sm = new StaticMethod();
sm.instanceCall();
System.out.println("main() - var=" + sm.iVar);
}
}
클래스 생성
package chapter07;
public class Student {
// 필드
String name; // 학생명
int grade; // 학년
String department; // 학과
// 기본 생성자 - 생략가능
Student() {
}
}
클래스 사용
package chapter07;
public class StudentMain {
public static void main(String[] args) {
Student stu1 = new Student(); // 기본 생성자
}
}
클래스 생성
package chapter07;
public class Student2 {
// 필드
String name; // 학생명
int grade; // 학년
String department; // 학과
// 1번 생성자
Student2() {
}
// 2번 생성자
Student2(String n) {
name = n;
}
// 3번 생성자
Student2(String n, int g) {
name = n;
grade = g;
}
// 4번 생성자
Student2(String n, int g, String d) {
name = n;
grade = g;
department = d;
}
// 학과와 학년을 매개변수로 받는 생성자 (에러 발생)
// Student(String d, int g) {
// department = d;
// grade = g;
// }
}
package chapter07;
public class StudentMain {
public static void main(String[] args) {
Student stu1 = new Student(); // 기본 생성자
// 필드 초기화
stu1.name = "홍길동";
stu1.grade = 3;
stu1.department = "자바";
Student stu2 = new Student(); // 기본 생성자
// 필드 초기화
stu2.name = "임꺽정";
stu2.grade = 3;
stu2.department = "파이썬";
}
}
package chapter07;
public class StudentMain2 {
public static void main(String[] args) {
Student stu1 = new Student(); // 1번 생성자
Student stu2 = new Student("홍길동"); // 2번 생성자
Student stu3 = new Student("홍길동", 4); // 3번 생성자
Student stu4 = new Student("홍길동", 4, "소프트웨어공학");
}
}
package chapter07;
public class Car2 {
// 필드
String color;
String company;
String type;
Car2() {
this("white", "기아", "경차");
}
Car2(String color, String company, String type) {
this.color = color;
this.company = company;
this.type = type;
}
Car2(String com, String t) {
this("white", com, t);
}
Car2(String t) {
this("white", "기아", t);
}
public String toString() {
return color + "-" + company + "-" + type;
}
}
클래스 생성
package chapter07;
public class Student3 {
// 필드 : private 외부클래스에 접근 불가
private String name; // 학생명
private int grade; // 학년
private String department; // 학과
// getter, setter
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getGrade() {
return grade;
}
public void setGrade(int grade) {
this.grade = grade;
}
public String getDepartment() {
return department;
}
public void setDepartment(String department) {
this.department = department;
}
}
클래스 사용
package chapter07;
public class StudentMain3 {
public static void main(String[] args) {
Student3 stu1 = new Student3(); // 기본생성자
//stu1.name = "홍길동" // 접근 불가
// set
stu1.setName("홍길동");
stu1.setGrade(4);
stu1.setDepartment("자바");
// get
String name = stu1.getName();
int grade = stu1.getGrade();
String department = stu1.getDepartment();
System.out.println("name="+name);
System.out.println("grade="+grade);
System.out.println("department="+department);
}
}
package chapter07;
class InitBlockEx{
int x;
static int A ;
static {
test();
A++;
System.out.println("static block A : " + A);
}
{
instanceMethod();
x++;
System.out.println("instance block x : " + x);
}
static void test() {
A++;
System.out.println("static method A : " + A);
}
public InitBlockEx() {
instanceMethod();
x++;
System.out.println("contsructor A, x : " + A +"," + x);
}
private void instanceMethod() {
x++;
System.out.println("instance method x : " + x);
}
}
package chapter07;
public class InitBlockTest {
public static void main(String[] args) {
InitBlockEx a = new InitBlockEx();
}
}
package greeting.korea;
public class Hello {
public Hello() {
System.out.println("greeting.korea.Hello");
}
}
package greeting.usa;
public class Hello {
public Hello() {
System.out.println("greeting.usa.Hello");
}
}
package chapter07;
public class AccessEx {
private int a = 1;
protected int b = 2;
int c = 3;
public int d = 4;
}
각 접근 제한자 사용 - 같은 패키지
package chapter07;
public class AccessExMain{
public static void main(String[] args) {
AccessEx ae = new AccessEx();
//System.out.println(ae.a); // private 접근 불가
System.out.println(ae.b);
System.out.println(ae.c);
System.out.println(ae.d);
}
}
각 접근 제한자 사용 - 다른 패키지
package chapter06;
import chapter07.AccessEx;
public class AccessExMain{
public static void main(String[] args) {
AccessEx ae = new AccessEx();
//System.out.println(ae.a); // private 접근 불가
System.out.println(ae.b); // protected 접근 불가
System.out.println(ae.c); // default 접근 불가
System.out.println(ae.d);
}
}
클래스 생성
package chapter07;
public class Singleton {
// static 변수
private static Singleton instance = new Singleton();
// 생성자에 private 접근 제한자
private Singleton() {
System.out.println("객체 생성");
}
// static 메서드
public static Singleton getInstance() {
System.out.println("객체 리턴");
return instance;
}
}
클래스 사용
package chapter07;
public class SingletonMain {
public static void main(String[] args) {
//Singleton s = new Singleton(); // 에러 발생
Singleton s1 = Singleton.getInstance();
Singleton s2 = Singleton.getInstance();
Singleton s3 = Singleton.getInstance();
System.out.println(s1); // 동일 주소
System.out.println(s2); // 동일 주소
System.out.println(s3); // 동일 주소
}
}
package chapter07;
public class FinalEx {
public static void main(String[] args) {
Final f = new Final();
//f.number = 200; // 에러
System.out.println("PI = " + Final.PI);
System.out.println(f.number);
}
}
class Final {
final static double PI = 3.14;
final int number; // 상수
Final() {
number = 100; // 생성자에서 1번 초기화 가능
}
}
package user;
// User 정보
public class UserVO {
private String id;
private String pw;
private String name;
public UserVO() {
}
public UserVO(String id, String pw, String name) {
this.id = id;
this.pw = pw;
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPw() {
return pw;
}
public void setPw(String pw) {
this.pw = pw;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package user;
// 로그인 서비스
public class LoginService {
String id = "hong";
String pw = "0000";
boolean isLogin(String id, String pw, String name) {
boolean rs = false;
if(id.equals(this.id)) {
if(pw.equals(this.pw)) {
System.out.println("Welcom !! " + name );
rs = true;
}
}
return rs;
}
boolean isLogin(UserVO user) {
boolean rs = false;
String id = user.getId();
String pw = user.getPw();
String name = user.getName();
if(id.equals(this.id)) {
if(pw.equals(this.pw)) {
System.out.println("Welcom !! " + name );
rs = true;
}
}
return rs;
}
}
package user;
import java.util.Scanner;
public class UserLoginTest {
public static void main(String[] args) {
boolean rs = false;
Scanner scan = new Scanner(System.in);
System.out.println("id >>> ");
String id = scan.next();
System.out.println("pw >>> ");
String pw = scan.next();
System.out.println("name >>> ");
String name = scan.next();
LoginService ls = new LoginService();
// 각각의 인자 사용
rs = ls.isLogin(id, pw, name);
if(rs) {
System.out.println("login success");
}else {
System.out.println("login fail");
}
// VO 사용
UserVO user = new UserVO(id, pw, name);
rs = ls.isLogin(user);
if(rs) {
System.out.println("login success");
}else {
System.out.println("login fail");
}
}
}