*class - 설계도 / instance - 제품 / 객체(변수와 메소드의 집합) //클래스를 정의할떄도 변수와 메소드를 정의함
*멤버는 구성원 - 그 클래스의 구성원, 인스턴스의 구성원
*클래스 소유의 변수 -> 모든 인스턴스에서 같은 값을 가짐 static(그 클래스의 멤버가 되는것)
인스턴스 마다 값이 다르기 떄문에 left right 는 인스턴스의 소유 (인스턴스의 값에 따라 달라지는 것)

1)refactoring -> 중복된 로직 제거하는 것 (건강해진 코드~ 노버그~)

유지보수 쉽고 가독성 상향
2) 나타나게 된 배경
1. 메소드 나눠지면 문제? ->객체지향으로 그룹핑을 하면 해결~
코드양이 많아지면 코드 겹칠수도 있음 섞이고 섞이고~ -> 다른곳에 못씀

다른 코드 들어와서 right중복될수있음
내가 원하는 값 sum이나 avg 갖고 오고 싶을때 맘대로 가져오게 하기 (객체화)
1)

2)클래스/객체를 만든다는 것 ->우리가 메모리를 사용하는 것 -> left right 값-> 사용자정의 데이터타입을 만든다는 것(시스템적 의미로)
3)클래스변수
- 클래스변수에 의해 만들어진 인스턴스들은 클래스변수가 갖고 있는 값을 자연스럽게 갖고있게 되는 것
- ---static double PI =3.14; static한 변수가 된다는 것 - 클래스에 소속(변수를 모든 메소드에 동일한 값을 가짐)
- static키워드가 있으면 클래스 멤버가 되고어디서든 사용 가능하다(매번 같은 값을 가져다가 연산해야 할 떄) ex) pI 3.14
ex)
class Calculator {
static double PI =3.14;
~~~
}
public class {
public static void main(String[] args) {
Calculator c1 = new Calculator();
sysout(c1.PI); ->3.14
Calculator c2 = new Calculator();
sysout(c2.PI); ->3.14
sysout(Calculator.PI) ->3.14
4)클래스 메소드
- 3(/c1 c2 c3 등 다른값 가질 필요가 있을 때 인스턴스를 만듬 (new...) 과 달리 -필요할때마다 그냥 인자만 줘서 실행하는 경우 (일회용 느낌)
- static이 있는 메소드는 클래스를 통해 직접적으로 접근해서 실행가능

5)
- 인스턴스 메소드는 클래스 맴버에 접근 할 수 있다. (인메 -> 클래스 멤버, 메소드)
- 클래스 메소드는 인스턴스 맴버에 접근 할 수 없다. (클메 x 인메) 클래스를 기반으로 만들어진 인스턴스라 생성되지 않는 인스턴스에 접근할 수 없다라 이해하면 됨
클래스 변수 ->Static Field
인스턴스 변수->(Non-Static Field



'JAVA > ★객체지향' 카테고리의 다른 글
상속과 생성자/ super (0) | 2023.03.10 |
---|---|
상속 - extends( 부모->자식//->자식) (0) | 2023.03.10 |
초기화와 생성자 (0) | 2023.03.10 |
스코프(유효범위) , 지역변수 전역변수 , this예시 (0) | 2023.03.10 |
객체지향 이론개념들 (0) | 2023.03.10 |