Computer Science/Java

W3Schools 자바 | #2 OOP(Classes, Attributes, Methods)

토마토. 2022. 9. 8. 11:24

Java OOP (Object-Oriented Programming) (w3schools.com)

 

Java OOP (Object-Oriented Programming)

W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.

www.w3schools.com

 

Java OOP
Java OOP
  • OOP란? Object Oriented Programming 객체 지향 프로그래밍의 약자다. 
  • 절차 지향 프로그래밍이 프로시저, 메소드를 작성한다면, 
  • 객체 지향 프로그래밍은 데이터와 매소드를 모두 포함한 객체를 만들어낸다. 
  • OOP의 장점
    • 빠르게 실행 가능함
    • 코드 유지 보수에 용이함
    • 재사용이 용이함
  • 클래스와 객체
    • 클래스 : 객체를 만드는 틀
    • Object 객체 : 클래스로 만들어낸 인스턴스
Java Classes/Objects
public class Main {
  int x = 5;

  public static void main(String[] args) {
    Main myObj = new Main();
    System.out.println(myObj.x);
  }
}

 

객체를 여러 개 생성해줄 수도 있다. 

public class Main {
  int x = 5;

  public static void main(String[] args) {
    Main myObj1 = new Main();
    Main myObj2 = new Main();
    System.out.println(myObj1.x);
    System.out.println(myObj2.x);
  }
}

 

Java Class Attributes

클래스 안에 있는 변수를 'attribute'라고 한다. 

public class W3Schools_OOP {
    public static void main(String[] args){
        int x = 5;
        int y = 3;
    }
}

예를 들면 위 예시에서 x, y가 W3Shools_OOP 클래스의 attribute이다. 

 

public class W3Schools_OOP {
    int x = 5;
    int y = 3;
    public static void main(String[] args){

        W3Schools_OOP myobj = new W3Schools_OOP();
        System.out.println(myobj.x);
        System.out.println(myobj.y);
    }
}

Java attribute에 접근할 때는 클래스 객체를 만들고 그 뒤에 .을 붙여 속성에 접근하면 된다. 

public class W3Schools_OOP {
    int x = 5;
    int y = 3;
    public static void main(String[] args){
        W3Schools_OOP myobj1 = new W3Schools_OOP();
        W3Schools_OOP myobj2 = new W3Schools_OOP();
        System.out.println(myobj1.x);
        System.out.println(myobj1.y);
        System.out.println(myobj2.x);
        System.out.println(myobj2.y);
    }
}

 

여러 개의 객체를 만드는 것이 가능하고, 

 

public class W3Schools_OOP {
    int x = 5;
    int y = 3;
    String fname = "John";
    String lname = "Doe";
    int age = 24;

    public static void main(String[] args){
    }
}

다양한 타입의 attribute을 생성하는 것 또한 가능하다. 

 

Java Class Methods
public class W3Schools_OOP {
    public static void main(String[] args){
        myMethod();
    }
    static void myMethod(){
        System.out.println("Hello world!");
    }
}

기본적으로 매소드를 생성하고 호출하는 방식은 위와 같다. 

 

  • static 키워드를 사용한 매소드는 인스턴스를 만들지 않아도 호출할 수 있다. 
  • 예를 들면 다음과 같다. 
className.methodName();

 

public class W3Schools_OOP {
    public static void main(String[] args){
        myMethod();
        W3Schools_OOP newInstance = new W3Schools_OOP();
        newInstance.myPublicMethod();
    }
    static void myMethod(){
        System.out.println("static method can be called without creating object");
    }
    public void myPublicMethod(){
        System.out.println("non static method must be called by creating objects");
    }


}

 

  • 인스턴스를 사용하여 매소드를 사용하기
public class Speed {
    public static void main(String[] args){
        Speed myCar = new Speed();
        myCar.fullThrottle();
        myCar.speed(100);
    }
    public void fullThrottle(){
        System.out.println("The car is going as fast as it can!");
    }
    public void speed(int maxSpeed){
        System.out.println("Max speed is : "+maxSpeed);
    }

}
  • 여러가지 클래스를 사용하기
public class Main {
    public static void main(String[] args){
        Speed myCar = new Speed();
        myCar.fullThrottle();
        myCar.speed(100);

    }
}

intelliJ 프로젝트에 위치하는 클래스를 이용하는 경우, 

파이썬처럼 모듈을 import하는 과정을 거칠 필요 없이 바로 객체를 생성해줄 수 있다.