package kr.s14.object.statictest;
public class StaticCount {
//인스턴스 변수: 객체가 생성될 때 객체에 포함되는 변수
int c;
//static(또는 클래스) 변수: 객체 생성과 무관, 즉 객체에 포함되지않음. 호출하면 메모리(static 영역)에 올라감
static int count;
//생성자
public StaticCount() {
c++;
count++;//StaticCount.count를 써도 되지만 같은 클래스기 때문에 생략가능
}
}
package kr.s14.object.statictest;
public class StaticMain01 {
public static void main(String[] args) {
StaticCount sc1 = new StaticCount();
System.out.println("c :"+sc1.c + ", count :"+ StaticCount.count);
//sc1.count라고 해도 에러는 안나지만
//스태틱을 사용할 땐 정상적인 호출방법이 아님
//클래스 명을 붙이는게 가장 이상적인 방법.
StaticCount sc2 = new StaticCount();
System.out.println("c :"+sc2.c +", count :"+StaticCount.count);
StaticCount sc3 = new StaticCount();
System.out.println("c :"+sc3.c +", count :"+StaticCount.count);
}
}
c :1, count :1
c :1, count :2
c :1, count :3
package kr.s14.object.statictest;
class StaticMethod {
//인스턴스변수
String s1 ="행복";
//static(클래스)변수
static String s2 = "행운";
//static(클래스) 메서드
public static String getString() {
return s2; //s1을 호출하면 에러. s1은 메모리가 올라가지않기 때문에
}
}
public class StaticMain02 {
public static void main(String[] args) {
//static메서드는 객체 생성 없이 호출할 수 있고 클래스명.메서드명의 형태로 호출
System.out.println(StaticMethod.getString());
//static 변수는 클래스명.변수명의 형태로 호출
System.out.println(StaticMethod.s2);
//인스턴스 변수를 호출하기 위해서는 먼저 객체 생성 후
//참조변수.변수명 형태로 호출
StaticMethod sm = new StaticMethod();
System.out.println(sm.s1);
//System.out.println(StaticMethod.s1); 은 오류가 발생
}
}
행운
행운
행복
응용
package kr.s15.object.thistest;
public class Animal {
private String name;
private int age;
private boolean fly;
//생성자
public Animal() {
}
public Animal(String name, int age, boolean fly) {
this.name = name;
this.age = age;
this.fly = fly;
}
//멤버 메서드
//일일히 안치고 바로 get/set 메서드 만드는 방법
//우클릭 source -> generate getters and setters
//후 모두선택 하면 generate
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public boolean isFly() {//boolean은 get보단 is라고 씀
return fly;
}
public void setFly(boolean fly) {
this.fly = fly;
}
}
package kr.s15.object.thistest;
public class AnimalMain {
/*
* [실습]
* Animal
* 멤버변수: 이름(name),나이(int age),비행여부(fly <true false>) - 은닉화(private) get메소드 쓰라는뜻
* 멤버 메서드: public set/get 메서드를 정의
* 생성자:인자가 있는 생성자, 인자가 없는 생성자
* AnimalMain
*
* 인자가 있는 생성자를 이용해서 객체 생성(까치 코끼리 사자 등등 )
* 이름,나이,비행여부를 출력, 비행여부는 true/false -> 가능/불가능 으로 출력
*
* 인자가 없는 생성자를 이용해서 객체 생성
* 이름,나이,비행여부 설정
* 이름,나이,비행여부를 출력, 비행여부 true/false -> 가능/불가
*/
public static void main(String[] args) {
//인자가 있는 생성자를 이용해서 객체를 생성
Animal a1 = new Animal("기러기",3,true);
System.out.println("이름 : "+a1.getName()+"\\n"
+"나이 : "+a1.getAge()+"\\n"
+"비행여부 : " + (a1.isFly() ? "가능":"불가능"));
//static을 활용한 것을 호출
System.out.println("------------------------------------------");
System.out.println("비행여부:"+printFly(a1.isFly()));
System.out.println("------------------------------------------");
//인자가 없는 생성자를 이용해서 객체를 생성
Animal a2 = new Animal();
a2.setName("기린");
a2.setAge(12);
a2.setFly(false);
System.out.println("이름 : "+a2.getName()+"\\n"
+"나이 : "+a2.getAge()+"\\n"
+"비행여부 : " + (a2.isFly() ? "가능":"불가능"));
//static을 활용한 것을 호출
System.out.println("------------------------------------------");
System.out.println("비행여부:"+printFly(a2.isFly()));
System.out.println("------------------------------------------");
}
//객체생성 없이 호출하는 법 -> static 사용
private static String printFly(boolean fly) {
return fly ? "가능":"불가능";
}
}
이름 : 기러기
나이 : 3
비행여부 : 가능
------------------------------------------
비행여부:가능
------------------------------------------
이름 : 기린
나이 : 12
비행여부 : 불가능
------------------------------------------
비행여부:불가능
------------------------------------------
'쌍용교육(JAVA) > JAVA' 카테고리의 다른 글
쌍용교육 -JAVA 수업 9일차 this,this() (0) | 2024.04.11 |
---|---|
쌍용교육 -JAVA 수업 9일차 LocalVariable(멤버,지역변수) (0) | 2024.04.11 |
쌍용교육 -JAVA 수업 8일차 Capsule 캡슐화 및 응용 (0) | 2024.04.11 |
쌍용교육 -JAVA 수업 8일차 Pack (0) | 2024.04.11 |
쌍용교육 -JAVA 수업 8일차 Overloading (0) | 2024.04.11 |
package kr.s14.object.statictest;
public class StaticCount {
//인스턴스 변수: 객체가 생성될 때 객체에 포함되는 변수
int c;
//static(또는 클래스) 변수: 객체 생성과 무관, 즉 객체에 포함되지않음. 호출하면 메모리(static 영역)에 올라감
static int count;
//생성자
public StaticCount() {
c++;
count++;//StaticCount.count를 써도 되지만 같은 클래스기 때문에 생략가능
}
}
package kr.s14.object.statictest;
public class StaticMain01 {
public static void main(String[] args) {
StaticCount sc1 = new StaticCount();
System.out.println("c :"+sc1.c + ", count :"+ StaticCount.count);
//sc1.count라고 해도 에러는 안나지만
//스태틱을 사용할 땐 정상적인 호출방법이 아님
//클래스 명을 붙이는게 가장 이상적인 방법.
StaticCount sc2 = new StaticCount();
System.out.println("c :"+sc2.c +", count :"+StaticCount.count);
StaticCount sc3 = new StaticCount();
System.out.println("c :"+sc3.c +", count :"+StaticCount.count);
}
}
c :1, count :1
c :1, count :2
c :1, count :3
package kr.s14.object.statictest;
class StaticMethod {
//인스턴스변수
String s1 ="행복";
//static(클래스)변수
static String s2 = "행운";
//static(클래스) 메서드
public static String getString() {
return s2; //s1을 호출하면 에러. s1은 메모리가 올라가지않기 때문에
}
}
public class StaticMain02 {
public static void main(String[] args) {
//static메서드는 객체 생성 없이 호출할 수 있고 클래스명.메서드명의 형태로 호출
System.out.println(StaticMethod.getString());
//static 변수는 클래스명.변수명의 형태로 호출
System.out.println(StaticMethod.s2);
//인스턴스 변수를 호출하기 위해서는 먼저 객체 생성 후
//참조변수.변수명 형태로 호출
StaticMethod sm = new StaticMethod();
System.out.println(sm.s1);
//System.out.println(StaticMethod.s1); 은 오류가 발생
}
}
행운
행운
행복
응용
package kr.s15.object.thistest;
public class Animal {
private String name;
private int age;
private boolean fly;
//생성자
public Animal() {
}
public Animal(String name, int age, boolean fly) {
this.name = name;
this.age = age;
this.fly = fly;
}
//멤버 메서드
//일일히 안치고 바로 get/set 메서드 만드는 방법
//우클릭 source -> generate getters and setters
//후 모두선택 하면 generate
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public boolean isFly() {//boolean은 get보단 is라고 씀
return fly;
}
public void setFly(boolean fly) {
this.fly = fly;
}
}
package kr.s15.object.thistest;
public class AnimalMain {
/*
* [실습]
* Animal
* 멤버변수: 이름(name),나이(int age),비행여부(fly <true false>) - 은닉화(private) get메소드 쓰라는뜻
* 멤버 메서드: public set/get 메서드를 정의
* 생성자:인자가 있는 생성자, 인자가 없는 생성자
* AnimalMain
*
* 인자가 있는 생성자를 이용해서 객체 생성(까치 코끼리 사자 등등 )
* 이름,나이,비행여부를 출력, 비행여부는 true/false -> 가능/불가능 으로 출력
*
* 인자가 없는 생성자를 이용해서 객체 생성
* 이름,나이,비행여부 설정
* 이름,나이,비행여부를 출력, 비행여부 true/false -> 가능/불가
*/
public static void main(String[] args) {
//인자가 있는 생성자를 이용해서 객체를 생성
Animal a1 = new Animal("기러기",3,true);
System.out.println("이름 : "+a1.getName()+"\\n"
+"나이 : "+a1.getAge()+"\\n"
+"비행여부 : " + (a1.isFly() ? "가능":"불가능"));
//static을 활용한 것을 호출
System.out.println("------------------------------------------");
System.out.println("비행여부:"+printFly(a1.isFly()));
System.out.println("------------------------------------------");
//인자가 없는 생성자를 이용해서 객체를 생성
Animal a2 = new Animal();
a2.setName("기린");
a2.setAge(12);
a2.setFly(false);
System.out.println("이름 : "+a2.getName()+"\\n"
+"나이 : "+a2.getAge()+"\\n"
+"비행여부 : " + (a2.isFly() ? "가능":"불가능"));
//static을 활용한 것을 호출
System.out.println("------------------------------------------");
System.out.println("비행여부:"+printFly(a2.isFly()));
System.out.println("------------------------------------------");
}
//객체생성 없이 호출하는 법 -> static 사용
private static String printFly(boolean fly) {
return fly ? "가능":"불가능";
}
}
이름 : 기러기
나이 : 3
비행여부 : 가능
------------------------------------------
비행여부:가능
------------------------------------------
이름 : 기린
나이 : 12
비행여부 : 불가능
------------------------------------------
비행여부:불가능
------------------------------------------
'쌍용교육(JAVA) > JAVA' 카테고리의 다른 글
쌍용교육 -JAVA 수업 9일차 this,this() (0) | 2024.04.11 |
---|---|
쌍용교육 -JAVA 수업 9일차 LocalVariable(멤버,지역변수) (0) | 2024.04.11 |
쌍용교육 -JAVA 수업 8일차 Capsule 캡슐화 및 응용 (0) | 2024.04.11 |
쌍용교육 -JAVA 수업 8일차 Pack (0) | 2024.04.11 |
쌍용교육 -JAVA 수업 8일차 Overloading (0) | 2024.04.11 |