객체지향의 특징
추상화와 구체화
abstract class Unit{
int x, y;
abstract void move(int x, int y);
void stop(){ /*멈추기*/ };
*유닛의 공통적인 특징 및 행동을 정의
class Marine extends Unit{
void move(int x, int y){
/* 이동하기 구현 */
}
void attack(){
/* 공격하기 구현 */
};
}
*상속을 통해 공통적인 행동양식을 상속받고 Marine에 대한 구체적인 구현
클래스
class Tv {
// 속성(변수)
String color;
boolean power;
int channel;
// 기능(메서드)
void power() { power = !power; }
void channelUp() { channel++; }
void channelDown() { channel--; }
변수
public class Person {
String name;//인스턴스 변수
int age;
static int count;//클래스 변수
public void eat(int input//파라미터 변수) {
int number=10;//지역변수
System.out.println("배고파");
}
public void work() {
System.out.println("힘들어");
}
}
public class PersonTest {
public static void main(String[] args) {
Person person1=new Person();
person1.name="kim";
System.out.println(person1.name);
}
}
public class PersonTest {
public static void main(String[] args) {
System.out.println(Person.count);
}
}
public class PersonTest {
public static void main(String[] args) {
int num;
num=10;
System.out.print(num);
}
}
메서드
//Person.java
public class Person {
String name;
int age;
boolean isHungry;
static int count;
public void printInfo() {
System.out.println("name"+"age");
}
public static void printInfoStatic() {
System.out.println("name,age를 가진 학생입니다.");
}
}
//PersonTest.java
public class PersonTest {
public static void main(String[] args) {
Person p1=new Person();
p1.printInfo();
Person.printInfoStatic();
}
}
*클래스 메서드는 메서드 로딩시 메모리에 생성되므로 인스턴스 변수를 사용할 수 없다.인스턴스 변수를 사용하려면 객체를 생성 후 사용해야한다.
오버로딩
//Person.java
public class Person {
String name;
int age;
boolean isHungry;
static int count;
public void printInfo() {
System.out.println("name"+"age");
}
public static void printInfoStatic() {
System.out.println("name,age를 가진 학생입니다.");
}
public void walk() {
System.out.println("걷다");
}
public void walk(int distance) {
System.out.println(distance+"m를 걷다");
}
}
public class PersonTest {
public static void main(String[] args) {
Person p1=new Person();
p1.walk();
p1.walk(10);
}
}
걷다
10m를 걷다
생성자
public class Person {
String name;
int age;
boolean isHungry;
//public Person() {컴파일러가 자동으로 삽입
//}
public Person(String name, int age, boolean isHungry) {//해당 파라미터를 줬을 때 적용된다.
super();
this.name = name;
this.age = age;
this.isHungry = isHungry;
}
}
public class Person {
String name;
int age;
boolean isHungry;
public Person(String name, int age, boolean isHungry) {//해당 파라미터를 줬을 때 적용된다.
super();
this.name = name;
this.age = age;
this.isHungry = isHungry;
}
}
this
public class Person {
String name;
static int count;
public Person() {
// this.name="홍길동" 아래의 this가 둘째줄이 되기 때문에 오류가 난다.
this("홍길동");//this를 통해 아래의 기본생성자로 다시 한번 초기화 가능+기본생성자의 첫번째 줄에만 써야한다.
}
public Person(String name) {
this.name=name;
}
// public static int getCount(){ 스태틱 영역에서 this는 사용이 불가능하다.
// return this.count;
// }
public int getCount() {//자기 자신의 count 반환
return this.count;
}
}
잘 봤습니다. 좋은 글 감사합니다.