4. C언어 vs JAVA
1. 단순!
(포인터, 구조체 없음, garbage
collection 기능 등)
2. 객체지향적(Object-Oriented)
3. VM(Virtual Machine)에서 동작
(다양한 기기에서 동작 가능!)
5. 객체지향이 뭐지?
실제 사물들을 컴퓨터 내에서 ‘객체’로 모델링
객체끼리 메시지를 주고받고, 데이터를 처리함.
‘사람’
Class
‘동빈이’
객체
‘유밍디’
객체
성별: 남자
나이: 21
말한다
성별: 여자???????
나이: 24
말한다
6. Class는 뭐지?
Class
속성
attribute
행동
Method
Class Person{
private boolean gender;
private int age;
public void say(int mAge){
if(mAge >age)
System.out.println(“안녕하세요”);
else System.out.println(“안녕?”);
}
public void setAge(int mAge){
age = mAge;
}
public int getAge(){
return age;
}
public void setGender(boolean mGender){
gender = mGender;
}
public boolean getGender(){
return gender;
}
}
7. Class는 뭐지?
Public class Test{
public static void main(String[] args){
Person Minji, Dongbin;
Minji = new Person(24,True);
Dongbin = new Person(21, False);
Dongbin.say(Minji.getAge());
Minji.say(Dongbin.getAge());
}
Class Person{
private boolean gender;
private int age;
public void say(int mAge){
if(mAge >age)
System.out.println(“안녕하세요”);
else System.out.println(“안녕?”);
}
public void setAge(int mAge){
age = mAge;
}
public int getAge(){
return age;
}
public void setGender(boolean mGender){
gender = mGender;
}
public boolean getGender(){
return gender;
}
}
결과 :
안녕하세요
안녕?
8. Class는 뭐지?
Public class Test{
public static void main(String[] args){
Person Minji, Dongbin;
Minji = new Person(24,True);
Dongbin = new Person(21, False);
Minji.age = 20;
Dongbin.say(Minji.getAge());
Minji.say(Dongbin.getAge());
}
Class Person{
public boolean gender;
public int age;
public void say(int mAge){
if(mAge >age)
System.out.println(“안녕하세요”);
else System.out.println(“안녕?”);
}
public void setAge(int mAge){
age = mAge;
}
public int getAge(){
return age;
}
public void setGender(boolean mGender){
gender = mGender;
}
public boolean getGender(){
return gender;
}
}
결과 :
안녕?
안녕하세요
9. Class는 뭐지?
Public class Test{
public static void main(String[] args){
Person Minji, Dongbin;
Minji = new Person(24,True);
Dongbin = new Person(21, False);
Minji.age = 20; // error!!!
Dongbin.say(Minji.getAge());
Minji.say(Dongbin.getAge());
}
Class Person{
private boolean gender;
private int age;
public void say(int mAge){
if(mAge >age)
System.out.println(“안녕하세요”);
else System.out.println(“안녕?”);
}
public void setAge(int mAge){
age = mAge;
}
public int getAge(){
return age;
}
public void setGender(boolean mGender){
gender = mGender;
}
public boolean getGender(){
return gender;
}
}
결과 :
민지가 정상적으로 인사를 받을 수 있음!
10. Class는 뭐지?
Public class Test{
public static void main(String[] args){
Person Minji, Dongbin;
Minji = new Person(24,True);
Dongbin = new Person(21, False);
}
Class Person{
private int gender;
private int age;
public Person(int mAge, boolean mGender)
{
gender = mGender;
age = mAge;
}
public ~Person(){
}
….중략
}
소멸자 없음!
Garvage Collaction
생성자
11. Class는 뭐지?
Public class Test{
public static void main(String[] args){
Person Minji, Dongbin;
Minji = new Person(24,True);
Dongbin = new Person(21, False);
}
Class Person{
private int gender;
private int age;
public Person(int mAge, boolean mGender)
{
gender = mGender;
age = mAge;
}
public Person()
{
}
….중략
}
생성자
오버로딩
16. Class의 끝판왕! 다형성
Class Figure{
public draw(){
System.out.println(“도형을 그린다.”);
}
}
Class Polygon extends Figure{
public draw(){
System.out.println(“다각형을 그린다.”);
}
}
Class Square extends Polygon{
public draw(){
System.out.println(“사각형을 그린다.”);
}
}
Class Circle extends Figure{
public draw(){
System.out.println(“원을 그린다.”);
}
}
17. Class의 끝판왕! 다형성
Figure figure = new Figure();
Polygon polygon = new Polygon();
Square square = new Square();
Circle circle = new Circle();
figure.draw();
triangle.draw();
square.draw();
circle.draw();
도형을 그린다.
다각형을 그린다.
사각형을 그린다.
원을 그린다.
Class Figure{
public draw(){
System.out.println(“도형을 그린다.”);
}
}
Class Polygon extends Figure{
public draw(){
System.out.println(“다각형을 그린다.”);
}
}
Class Square extends Polygon{
public draw(){
System.out.println(“사각형을 그린다.”);
}
}
Class Circle extends Figure{
public draw(){
System.out.println(“원을 그린다.”);
}
}
18. Class의 끝판왕! 다형성
Figure name1 = new Figure();
Figure name2 = new Polygon();
Figure name3 = new Square();
Figure name4 = new Circle();
name1.draw();
name2.draw();
name3.draw();
name4.draw();
Class Figure{
public draw(){
System.out.println(“도형을 그린다.”);
}
}
Class Polygon extends Figure{
public draw(){
System.out.println(“다각형을 그린다.”);
}
}
Class Square extends Polygon{
public draw(){
System.out.println(“사각형을 그린다.”);
}
}
Class Circle extends Figure{
public draw(){
System.out.println(“원을 그린다.”);
}
}
도형을 그린다.
다각형을 그린다.
사각형을 그린다.
원을 그린다.