일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- AGGREGATE
- 참조에 의한 객체 복사
- JavaScript
- nestjs
- MongoDB
- nest
- Mongoose
- 위크셋
- 로그스태시
- 카카오 소셜로그인
- 자바스크립트
- Map
- 구조 분해 할당
- 이메일 전송
- nodemailer
- nextjs
- logstash
- JSON.stringify
- TypeScript
- 카카오로그인
- context switch
- 화살표 함수
- 위크맵
- 캐러셀
- react-slick
- javacript
- JSON.parse
- DB
- 중첩 구조 분해
- 객체
- Today
- Total
뚜sh뚜sh
클래스 본문
형식
1. 클래스 형식
class 클래스명 {
//field, constructor, and
// method declarations
}
}
- 멤버변수, 필드 : 클래스 안에 선언된 변수
- 메소드(method) : 클래스 안에 선언된 함수
package first;
public class test {
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}
class Book {
}
2. 멤버변수 또는 필드 형식
- 공용 변수
- 전역 변수와 유사한 속성 -> 클래스 안에서만
- 객체 속성은 곧 멤버변수이다
class Book {
String m_strTitle; // 책 제목
int m_nPage; // 페이지 수
String m_strPublisher; // 출판사
int m_nPrice; // 가격
}
// m_ : 멤버변수라는 의미
3. 메소드 형식
class Book {
String m_strTitle; // 책 제목
int m_nPage; // 페이지 수
String m_strPublisher; // 출판사
int m_nPrice; // 가격
void SetTitle(String strTitle) {
m_strTitle = strTitle;
}
String GetTitle() {
return m_strTitle;
}
void SetPage(int nPage) {
m_nPage = nPage;
}
int GetPage() {
return m_nPage;
}
void SetPublisher(String strPublisher) {
m_strPublisher = strPublisher;
}
String GetPublisher() {
return m_strPublisher;
}
void SetPrice(int nPrice) {
m_nPrice = nPrice;
}
int GetPrice() {
return m_nPrice;
}
}
객체 생성과 사용
- new
- .을 사용하여 멤버변수와 메소드에 접근
package first;
public class test {
public static void main(String[] args) {
// TODO Auto-generated method stub
Book JavaBook = new Book();
JavaBook.SetTitle("자바 공부 재밌다");
System.out.println("Book Title : " + JavaBook.GetTitle());
JavaBook.m_strPublisher = "Now Communication";
System.out.println("Publisher: " + JavaBook.m_strPublisher);
}
}
class Book {
String m_strTitle; // 책 제목
int m_nPage; // 페이지 수
String m_strPublisher; // 출판사
int m_nPrice; // 가격
void SetTitle(String strTitle) {
m_strTitle = strTitle;
}
String GetTitle() {
return m_strTitle;
}
void SetPage(int nPage) {
m_nPage = nPage;
}
int GetPage() {
return m_nPage;
}
void SetPublisher(String strPublisher) {
m_strPublisher = strPublisher;
}
String GetPublisher() {
return m_strPublisher;
}
void SetPrice(int nPrice) {
m_nPrice = nPrice;
}
int GetPrice() {
return m_nPrice;
}
}
접근 제어자
- private : 클래스 안에서만 접근 가능
- public : 전체에서 접근 가능
- protected : 같은 클래스와 패키지 그리고 하위 클래스에 접근 가능
- friendly 또는 생략된 제어자 : 같은 클래스와 패키지 안에서만 접근 가능
1. 접근 제어자 사용 형식
- 접근제어자 데이터형 변수명;
- public int m_nVar;
- 접근제어자 리턴형 함수명();
private int GetVar() {
return m_nVar;
}
오버로딩(overloading)
- 중복되는 메소드명을 클래스 안에서 정의할 수 있도록 하는 것
- 같은 함수명으로 다양한 값을 받아 처리
- 함수명 하나만 기억하면 됨
package first;
public class test1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
OverLoadTest OverLoadObject = new OverLoadTest();
System.out.println("Add(int nVar1, int nVar2) : " + OverLoadObject.Add(10, 2));
System.out.println("Add(float fVar1, float fVar2) : " + OverLoadObject.Add(3.0f, 0.14f));
System.out.println("Add(int nVar1, int nVar2, float fVar1) : " + OverLoadObject.Add(10, 2, 3.14f));
}
}
class OverLoadTest {
public int Add( int nVar1, int nVar2) {
return nVar1 + nVar2;
}
public float Add(float fVar1, float fVar2) {
return fVar1 + fVar2;
}
public int Add( int nVar1, int nVar2, float fVar1) {
return nVar1 + nVar2 + (int)fVar1;
}
}
생성자(constructor)
- 객체가 생성될 때 한번 호출되는 메소드
- 자동으로 호출되는 메소드
- 리턴형이 없고 클래스명과 함수명이 같다
- public
class MyClass {
public MyClass() {
}
public MyClass(int nVar1, int nVar2) {
}
}
package first;
public class MyClass {
public static void main(String[] args) {
// TODO Auto-generated method stub
A Test1 = new A();
System.out.println("Test1 m_nVar: " + Test1.Get());
System.out.println("Test1 m_fVar: " + Test1.m_fVar);
A Test2 = new A(7);
System.out.println("Test2 m_nVar: " + Test2.Get());
System.out.println("Test2 m_fVar: " + Test2.m_fVar);
}
}
class A {
private int m_nVar;
public float m_fVar = 3.14f;
public A() {
m_fVar = 12;
}
public A(int nVar) {
m_nVar = nVar;
}
public int Get() {
return m_nVar;
}
}
this, this()
1. this
- 객체 자신을 참조하는 참조형 클래스 변수 또는 키워드
- this.멤버변수
- this.메소드()
package first;
public class MyClass {
public static void main(String[] args) {
// TODO Auto-generated method stub
A Test = new A();
Test.SetPrint(8);
}
}
class A {
private int m_nVar;
public void SetPrint(int nVar) {
this.m_nVar = nVar;
this.Print();
}
public void Print() {
System.out.println("m_nVar : " + m_nVar);
}
}
2. this()
- 생성자에서 또 다른 생성자를 호출
- 생성자 첫 줄에서 호출
package first;
public class MyClass {
public static void main(String[] args) {
// TODO Auto-generated method stub
A Test = new A();
System.out.println("m_nVar : " + Test.m_nVar);
System.out.println("m_fVar : " + Test.m_fVar);
}
}
class A {
public int m_nVar;
public float m_fVar = 0.5f;
public A() {
this(3.14f); // 첫 줄에서 다른 생성자 호출
m_nVar = 12;
}
public A(float fVar) {
m_fVar = fVar;
}
}
static
- 접근제어자 static 데이터형 멤버변수명;
- 접근제어자 static 리턴형 메소드명(...);
1. static 멤버변수와 메소드의 공통점
- 객체가 생성되기 이전에 멤버변수와 메소드 사용 가능
2. static 멤버변수의 특징
- 멤버변수는 생성되는 모든 객체에서 전역변수로 사용 가능
package first;
public class MyClass {
public static void main(String[] args) {
// TODO Auto-generated method stub
A.m_nVar = 5;
A Test1 = new A();
A Test2 = new A();
A Test3 = new A();
System.out.printf("%1$d %2$d %3$d\n", Test1.m_nVar, Test2.m_nVar, Test3.m_nVar);
Test1.m_nVar = 11;
System.out.printf("%1$d %2$d %3$d\n", Test1.m_nVar, Test2.m_nVar, Test3.m_nVar);
A.m_nVar = 7;
System.out.printf("%1$d %2$d %3$d\n", Test1.m_nVar, Test2.m_nVar, Test3.m_nVar);
}
}
class A {
public static int m_nVar;
}
package first;
public class MyClass {
public static void main(String[] args) {
// TODO Auto-generated method stub
A.Print();
}
}
class A {
public static void Print() {
System.out.println("hihi");
}
}
3. static 멤버변수와 메소드의 사용규칙
- static 메소드 안에서 멤버 변수를 사용할 때 멤버 변수는 항상 static으로 선언된 것만을 사용할 수 있다
- static 메소드는 같은 클래스 안의 static 메소드만을 호출할 수 있다
- static 메소드 안에서는 this를 사용할 수 없다
- static 메소드는 오버라이딩을 할 수 없다
package
1. 개념
- 자주 사용되는 클래스를 모아 놓은 폴더
- 패키지명은 소문자를 사용 -> 관례
2. 형식
- package 패키지명;
- package mypackage.utility;
import
1. 사용
- C언어의 #include와 유사한 역할
- 클래스를 포함하고자 할 경우
2. 형식
- import 패키지명.클래스명; --------- 1
- import 패키지명.*; --------- 2
package test;
public class Utility {
public void Print() {
System.out.println("hihi");
}
}
package first;
import test.Utility;
public class first {
public static void main(String[] args) {
// TODO Auto-generated method stub
Utility A = new Utility();
A.Print();
}
}
'Language > Java' 카테고리의 다른 글
추상 클래스(abstract class) (0) | 2023.07.03 |
---|---|
상속(Inheritance) (0) | 2023.07.03 |
배열 (0) | 2023.06.30 |
반복문과 선택문 (0) | 2023.06.30 |
데이터와 연산자 (0) | 2023.06.30 |