μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
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 | 31 |
- Absolute
- AGI
- ai
- AI agents
- AI engineer
- AI researcher
- ajax
- algorithm
- Algorithms
- aliases
- Array κ°μ²΄
- ASI
- bayes' theorem
- Bit
- Blur
- BOM
- bootstrap
- canva
- challenges
- ChatGPT
- Today
- In Total
A Joyful AI Research Journeyπ³π
[33] 230214 Java Ch. 6 ν΄λμ€: 6. ν¨ν€μ§μ μ κ·Ό μ νμ, *Getter/Setter [K-λμ§νΈ νΈλ μ΄λ 33μΌ] λ³Έλ¬Έ
[33] 230214 Java Ch. 6 ν΄λμ€: 6. ν¨ν€μ§μ μ κ·Ό μ νμ, *Getter/Setter [K-λμ§νΈ νΈλ μ΄λ 33μΌ]
yjyuwisely 2023. 2. 14. 12:47230214 Tue 33rd class
Ch. 6 ν΄λμ€
μ§λ: p. 286 ~ (κ΅μ¬: νΌμ 곡λΆνλ μλ°, μ μ: μ μ©κΆ)
νλΉλ―Έλμ΄_νΌκ³΅μ_μ©μ΄μ§.pdf
μ©μ΄ μ°Έκ³
μλ° μ κ·Ό μ νμμ μ’ λ₯μ μ°¨μ΄(public, protected, private)
μ€λ λ°°μ΄ κ² μ€ κΈ°μ΅ν κ²μ μ 리νλ€.
μ§λ μμ λ λ°°μ΄ κ² μ€ λ€μ κΈ°μ΅ν κ²
μΈμ€ν΄μ€: ν΄λμ€λ‘λΆν° λ§λ€μ΄μ§ κ°μ²΄
μΈμ€ν΄μ€(instance) λ©€λ²: μΈμ€ν΄μ€ λ©€λ²λ κ°μ²΄(μΈμ€ν΄μ€)λ₯Ό μμ±ν ν μ¬μ©ν μ μλ νλμ λ©μλλ₯Ό λ§νλλ°, μ΄λ€μ κ°κ° μΈμ€ν΄μ€ νλ, μΈμ€ν΄μ€ λ©μλλΌκ³ λΆλ₯Έλ€.
μΈμ€ν΄μ€ νλμ λ©μλλ κ°μ²΄μ μμλ λ©€λ²μ΄κΈ° λλ¬Έμ κ°μ²΄ μμ΄λ μ¬μ©ν μ μλ€.
λ
Όλ¦¬ λΆμ μ°μ°μ(!) p. 113
λ Όλ¦¬ λΆμ μ°μ°μλ trueλ₯Ό falseλ‘, falseλ₯Ό trueλ‘ λ³κ²½νκΈ° λλ¬Έμ boolean νμ μλ§ μ¬μ©ν μ μλ€.
μ°μ°μ | μ€λͺ | |
! | νΌμ°μ°μ(x) | νΌμ°μ°μκ° trueμ΄λ©΄ false κ°μ μ°μΆ νΌμ°μ°μκ° falseμ΄λ©΄ true κ°μ μ°μΆ |
λ
Όλ¦¬ λΆμ μ°μ°μλ 쑰건문과 μ μ΄λ¬Έμμ 쑰건μμ κ°μ λΆμ νλλ‘ν΄μ μ€ν νλ¦μ μ μ΄ν λ μ£Όλ‘ μ¬μ©νλ€.
λν λ κ°μ§ μν(true/false)λ₯Ό λ²κ°μκ°λ©° λ²κ²½νλ ν κΈ(toggle) κΈ°λ₯μ ꡬνν λλ μ¬μ©νλ€.
λ Όλ¦¬ λΆμ μ°μ°μ(!)λ true κ°μ falseλ‘, false κ°μ trueλ‘ λ°μ μμΌμ€λ€.
μλ₯Ό λ€μ΄, 'if(쑰건문)'μ μ‘°κ±΄λ¬Έμ΄ μ°ΈμΌ κ²½μ° if λ¬Έμ΄ μ€νλλ€. νμ§λ§ 'if(!쑰건문)'μ΄ λλ©΄, μ‘°κ±΄λ¬Έμ΄ κ±°μ§μ΄λ©΄ μ°ΈμΌλ‘ λ°μ μν€κ³ μ°Έμ΄λ©΄ κ±°μ§μΌλ‘ λ°μ μν¨λ€. λ°λΌμ μ‘°κ±΄λ¬Έμ΄ κ±°μ§μΌ λ λ
Όλ¦¬ λΆμ μ°μ°μ(!)λ₯Ό λΆμ΄λ©΄ μ°ΈμΌλ‘ λ°μ λλ―λ‘ if λ¬Έμ΄ μ€νλλ€.μλμ 'if(쑰건문)'μ κ°μ μλ―Έλ₯Ό μ§λλ€.
if(Bool_true == 0){ ... }
if(!Bool_true){ ... }
μ°Έκ³ : https://sweetnew.tistory.com/m/50
boolean isValid = true;
if (isValid == false) {
System.out.println("Invalid");
}Copy
The above version is relatively easy to read, though it might be harder to do if the logical expression was more complex. Java has an alternative for us, though, in the form of the not operator:
boolean isValid = true;
if (!isValid) {
System.out.println("Invalid");
}
μ°Έκ³ : https://www.baeldung.com/java-using-not-in-if-conditions
When applied to a boolean value, the not operator turns true to false and false to true:
System.out.println(!true); // prints false
System.out.println(!false); // prints true
System.out.println(!!false); // prints false
μΈμ€ν΄μ€ λ©€λ²
class A{
//νλ
String Color; //μΈμ€ν΄μ€ νλ
int speed; //μΈμ€ν΄μ€ νλ
//μμ±μ
//λ©μλ
void run(){} //μΈμ€ν΄μ€ λ©μλ
}
μ μ λ©€λ²
class A{
//νλ
static String Color; //μ μ νλ
static int speed; //μ μ νλ
//μμ±μ
//λ©μλ
static void run(){} //μΈμ€ν΄μ€ λ©μλ
}
class ATest{
public static void main(String[] args){
//μ μ λ©€λ² νΈμΆ
//κ°μ²΄ μμ±μμ΄ ν΄λμ€λͺ
μΌλ‘
//νλ λ° λ©μλ μ°κ²°
Static.Color = "black";
Static.speed = 10;
Static.run();
//μΈμ€ν΄μ€ λ©€λ² νΈμΆ
//κ°μ²΄ μμ± ν μ°Έμ‘°λ³μλ₯Ό ν΅ν΄
//νλ λ° λ©μλ μ°κ²°
Instance in = new Instance();
in.Color = "black";
in.speed = 10;
in.run();
int a = 10;
a = 20;(O)
final int a = 10; //final νλ
static final int a = 10; //μμ νλ
The static keyword means the value is the same for every instance of the class.
The final keyword means once the variable is assigned a value it can never be changed.
static | κ°μ²΄λ§λ€ κ°μ§ νμκ° μλ 곡μ©μΌλ‘ μ¬μ©νλ νλ νΉμ μΈμ€ν΄μ€ νλλ₯Ό ν¬ν¨νμ§ μλ λ©μλ the value is the same for every instance of the class. |
final | ν λ² κ°μ΄ μ ν΄μ§κ³ λλ©΄ κ°μ λ°κΏ μ μλ νλ once the variable is assigned a value it can never be changed. |
static final | λͺ¨λ μμμμ κ³ μ λ κ°μΌλ‘ μ¬μ©νλ μμ |
μ°Έκ³ : https://gobae.tistory.com/3
Ch. 6 ν΄λμ€
μ± μ λͺ©μ°¨
06-1 κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°
06-2 νλ
06-3 μμ±μ
06-4 λ©μλ
06-5 μΈμ€ν΄μ€ λ©€λ²μ μ μ λ©€λ²
06-6 ν¨ν€μ§μ μ κ·Ό μ νμ
6.6 ν¨ν€μ§μ μ κ·Ό μ νμ
μλ°μμλ ν΄λμ€λ₯Ό 체κ³μ μΌλ‘ κ΄λ¦¬νκΈ° μν΄ ν¨ν€μ§(package)λ₯Ό μ¬μ©νλ€.
μλ°μμ ν¨ν€μ§(package)λ ν΄λμ€μ μΈν°νμ΄μ€μ μ§ν©μ μλ―Ένλ€.
μλμ° ν΄λ λ¬Έμ\pdfλ¬Έμ\abc.pdf λ¬Έμ\μμ λ¬Έμ\abc.xsl λ¬Έμ\νκΈλ¬Έμ\abc.hwp |
μλ° ν¨ν€μ§ μμν¨ν€μ§.νμν¨ν€μ§.ν΄λμ€ λ¬Έμ.pdfλ¬Έμ.abcν΄λμ€ λ¬Έμ.μμ λ¬Έμ.abcν΄λμ€ λ¬Έμ.νκΈλ¬Έμ.abcν΄λμ€ |
ν¨ν€μ§μ 물리μ μΈ ννλ νμΌ μμ€ν
μ ν΄λμ΄λ€.
ν¨ν€μ§λ ν΄λ κΈ°λ₯λ νκ³ , ν΄λμ€μ μΌλΆλΆμΌλ‘ ν΄λμ€λ₯Ό μ μΌνκ² λ§λ€μ΄μ£Όλ μλ³μ μν μ νλ€.
ν΄λμ€ μ΄λ¦μ΄ λμΌνλλΌλ ν¨ν€μ§κ° λ€λ₯΄λ©΄ λ€λ₯Έ ν΄λμ€λ‘ μΈμνλ€.
ν΄λμ€μ μ 체 μ΄λ¦μ 'ν¨ν€μ§ μ΄λ¦+ν΄λμ€ μ΄λ¦'μΈλ°
ν¨ν€μ§κ° μ, νμλ‘ κ΅¬λΆλμ΄ μλ€λ©΄ λνΈ(.)λ₯Ό μ¬μ©ν΄μ λ€μκ³Ό κ°μ΄ νννλ€.
μμν¨ν€μ§.νμν¨ν€μ§.ν΄λμ€
java.lang.String
μμ μμ μμ μλ°μ String ν΄λμ€λ java.lang ν¨ν€μ§μ μν ν΄λμ€λΌλ κ²μ μ μ μλ€.
6.6.1 ν¨ν€μ§ μ μΈ p. 287
package μμν¨ν€μ§.νμν¨ν€μ§;
public class ClassName { ... }
ex) Car ν΄λμ€κ° com.mycompany ν¨ν€μ§μ μν΄μΌ νλ€λ©΄ λ€μκ³Ό κ°μ΄ Car ν΄λμ€λ₯Ό μμ±ν΄μΌ νλ€.
package com.mycompany;
public class Car {...}
ν¨ν€μ§ μ΄λ¦μ κ·μΉ
- μ«μλ‘ μμ X, _, $λ₯Ό μ μΈν νΉμ λ¬Έμλ₯Ό μ¬μ©ν΄μλ μ λλ€.
- javaλ‘ μμνλ ν¨ν€μ§λ μλ° νμ€ APIμμλ§ μ¬μ©νλ―λ‘ μ¬μ©ν΄μλ μ λλ€.
- λͺ¨λ μλ¬Έμλ‘ μμ±νλ κ²μ΄ κ΄λ‘μ΄λ€.
ν¨ν€μ§ μ΄λ¦μ μ€λ³΅ λ°©μ§ λ°©λ²
: λλ©μΈ μ΄λ¦ μμ + νλ‘μ νΈ μ΄λ¦
com.samsung.projectname
com.hyundai.projectname
com.lg.projectname
org.apache.projectname
1) μ΄ν΄λ¦½μ€μμ ν¨ν€μ§ μμ±κ³Ό ν΄λμ€ μμ±
ex) ν¨ν€μ§ μ΄λ¦: sec06.exam01
Name: Car
2) import λ¬Έ p. 290
package → import → class μ μΈ μμ΄λ€.
μ¬μ©νκ³ μ νλ ν΄λμ€ λλ μΈν°νμ΄μ€κ° λ€λ₯Έ ν¨ν€μ§μ μμλμ΄ μλ€λ©΄, importλ¬ΈμΌλ‘ ν΄λΉ ν¨ν€μ§μ ν΄λμ€ λλ μΈν°νμ΄μ€λ₯Ό κ°μ Έμ μ¬μ©ν κ²μμ μ»΄νμΌλ¬μκ² μλ €μ€μΌ νλ€.
import μμν¨ν€μ§.νμν¨ν€μ§.ν΄λμ€μ΄λ¦;
import μμν¨ν€μ§.νμν¨ν€μ§.*;
λ§μ½ μ¬μ©νκ³ μ νλ ν΄λμ€λ€μ΄ λμΌν ν¨ν€μ§ μμμ΄λΌλ©΄ κ°λ³ importλ¬Έμ μμ±νλ κ²λ³΄λ€λ *λ₯Ό μ΄μ©ν΄μ ν΄λΉ ν¨ν€μ§μ μμλ ν΄λμ€λ€μ μ¬μ©ν κ²μμ μλ €μ£Όλ κ²λ μ’μ λ°©λ²μ΄λ€.
import ν¨ν€μ§μ΄λ¦.ν΄λμ€μ΄λ¦;
import ν¨ν€μ§μ΄λ¦.*;
ν¨ν€μ§ μ΄λ¦μλ ν¨ν€μ§μ κ²½λ‘κΉμ§ ν¬ν¨ν ν λ€μμ λͺ μν΄μΌ νλ€. 첫 λ²μ§Έ λ°©λ²μ ν΄λΉ ν¨ν€μ§μ νΉμ ν΄λμ€λ§μ μ¬μ©νκ³ μ ν λ μ¬μ©νλ€. λ λ²μ§Έ λ°©λ²μ ν΄λΉ ν¨ν€μ§μ λͺ¨λ ν΄λμ€λ₯Ό ν΄λμ€ μ΄λ¦λ§μΌλ‘ μ¬μ©νκ³ μΆμ λ μ¬μ©νλ€.
μΈν°νμ΄μ€(interface)λ λ€λ₯Έ ν΄λμ€λ₯Ό μμ±ν λ κΈ°λ³Έμ΄ λλ νμ μ 곡νλ©΄μ, λ€λ₯Έ ν΄λμ€ μ¬μ΄μ μ€κ° λ§€κ° μν κΉμ§ λ΄λΉνλ μΌμ’ μ μΆμ ν΄λμ€λ₯Ό μλ―Έν©λλ€. μλ°μμ μΆμ ν΄λμ€λ μΆμ λ©μλλΏλ§ μλλΌ μμ±μ, νλ, μΌλ° λ©μλλ ν¬ν¨ν μ μμ΅λλ€. νμ§λ§ μΈν°νμ΄μ€(interface)λ μ€λ‘μ§ μΆμ λ©μλμ μμλ§μ ν¬ν¨ν μ μμ΅λλ€.
μ°Έκ³ : http://www.tcpschool.com/java/java_polymorphism_interface
import λ¬Έμ μ μΈν λ λ³ν(*)λ₯Ό μ¬μ©νλ κ²μ΄ ν΄λΉ ν¨ν€μ§μ ν¬ν¨λ λ€λ₯Έ λͺ¨λ νμ ν¨ν€μ§μ ν΄λμ€κΉμ§ ν¬ν¨ν΄ μ£Όλ κ²μ μλλ€.
import java.awt.*;
import java.util.*;
μ¦, μμ κ°μ λ κ°μ import λ¬Έμ μλμ κ°μ΄ νλμ import λ¬ΈμΌλ‘ ννν μλ μμ΅λλ€.
import java.*;
μμ ) importλ¬Έ
Tire ν΄λμ€λ importλ λ ν¨ν€μ§(hankook, kumho)μ λͺ¨λ μκΈ° λλ¬Έμ ν¨ν€μ§ μ΄λ¦κ³Ό ν¨κ» μ 체 μ΄λ¦μ΄ κΈ°μ λμ΄μΌ νλ€.
package com.mycompany;
import exam06.hankook.Tire;
import exam06.hankook.ShowTire;
//import exam06.kumho.Tire;
//import exam06.kumho.BigWidthTire;
import exam06.kumho.*;
import exam06.hyundai.*;
public class Car {
//νλ
ShowTire tire1 = new ShowTire(); //ShowTire ν΄λμ€λ₯Ό ν¬ν¨μμΌλΌ(Car ν΄λμ€μ ShowTireν΄λμ€ κ°μ ν¬ν¨κ΄κ³)
Tire tire2 = new Tire(); //νκ΅ Tire ν΄λμ€λ₯Ό ν¬ν¨μμΌλΌ(Carν΄λμ€μ Tireν΄λμ€ κ°μ ν¬ν¨κ΄κ³)
BigWidthTire tire3 = new BigWidthTire(); //BigWidthTire ν΄λμ€λ₯Ό ν¬ν¨μμΌλΌ(Carν΄λμ€μ BigWidthTireν΄λμ€ κ°μ ν¬ν¨κ΄κ³)
Tire tire4 = new Tire(); //κΈνΈ Tire ν΄λμ€λ₯Ό ν¬ν¨μμΌλΌ(Carν΄λμ€μ Tireν΄λμ€ κ°μ ν¬ν¨κ΄κ³)
Engine engine = new Engine(); //Engine ν΄λμ€λ₯Ό ν¬ν¨μμΌλΌ(Carν΄λμ€μ Engineν΄λμ€ κ°μ ν¬ν¨κ΄κ³)
}
6.6.2 μ κ·Ό μ νμ (Access Modifier) p. 293
μ κ·Ό μ νμλ λ§ κ·Έλλ‘ ν΄λμ€ λ° μΈν°νμ΄μ€ κ·Έλ¦¬κ³ μ΄λ€μ΄ κ°μ§κ³ μλ λ©€λ²μ μ κ·Όμ μ ννκΈ° μν΄ μ¬μ©λλ€.
μ κ·Ό μ νμ΄ κ°νμ: public > protected > default > private
μ κ·Ό μ μ΄μ | κ°μ ν΄λμ€μ λ©€λ² | κ°μ ν¨ν€μ§μ λ©€λ² | μμ ν΄λμ€μ λ©€λ² | κ·Έ μΈμ μμ |
public | β | β | β | β |
protected | β | β | β | X |
default | β | β | X | X |
private | β | X | X | X |
ν΄λμ€ μμλ public, defaultλ§ μ¬ μ μλ€.
1) public μ κ·Ό μ νμ: λ¨μ΄ λ» κ·Έλλ‘ μΈλΆ ν΄λμ€κ° μμ λ‘κ² μ¬μ©ν μ μλλ‘ νλ€.
λͺ¨λ ν¨ν€μ§μμ μ ν μμ΄ μμ±μ νΈμΆ κ°λ₯νλ€.
2) protected μ κ·Ό μ νμ: κ°μ ν¨ν€μ§ λλ μμ ν΄λμ€μμ μ¬μ©ν μ μλλ‘ νλ€.
κ°μ ν¨ν€μ§μ μνλ ν΄λμ€μμ μμ±μ νΈμΆ κ°λ₯νλ€. λ€λ₯Έ ν¨ν€μ§μ μν ν΄λμ€κ° ν΄λΉ μμ ν΄λμ€λΌλ©΄ μμ±μλ₯Ό νΈμΆν μ μλ€.
μμ O
3) default μ κ·Ό μ νμ: κ°μ ν¨ν€μ§μ μμλ ν΄λμ€μμλ§ μ¬μ©ν μ μλλ‘ νλ€.
μμ±μλ₯Ό μ μΈν λ μ νμλ₯Ό μ무κ²λ μ μ§ μμΌλ©΄ default μ κ·Ό μ νμ κ°μ§λ€.
κ°μ ν¨ν€μ§ λ΄μμ μλ¬΄λ° μ ν μμ΄ μμ±μ νΈμΆ κ°λ₯νλ€.
μμ X
4) private μ κ·Ό μ νμ: λ¨μ΄ λ»λλ‘ κ°μΈμ μΈ κ²μ΄λΌ μΈλΆμμ μ¬μ©λ μ μλλ‘ νλ€.
μ€λ‘μ§ ν΄λμ€ λ΄λΆμμλ§ μμ±μ νΈμΆ κ°λ₯νλ€. κ°μ²΄ μμ± κ°λ₯νλ€.
κ°μ ν¨ν€μ§μ¬λ μ κ·Όμ΄ μ λλ€.
κ·Έλ¦Ό μ°Έκ³ : http://www.tcpschool.com/java/java_modifier_accessModifier
6.6.3 ν΄λμ€μ μ κ·Ό μ ν p. 294
ν΄λμ€ μμλ public, defaultλ§ μ¬ μ μλ€.
1) default μ κ·Ό μ ν
ν΄λμ€λ₯Ό μ μΈν λ publicμ μλ΅νλ€λ©΄ ν΄λμ€λ default μ κ·Ό μ νμ κ°μ§λ€.
κ°μ ν¨ν€μ§μμλ μλ¬΄λ° μ ν μμ΄ μ¬μ©ν μ μμ§λ§ λ€λ₯Έ ν¨ν€μ§μμλ μ¬μ©ν μ μλλ‘ μ νλλ€.
default μ κ·Ό μ νμ: κ°μ ν¨ν€μ§μ μμλ ν΄λμ€μμλ§ μ¬μ©ν μ μλλ‘ νλ€.
μμ±μλ₯Ό μ μΈν λ μ νμλ₯Ό μ무κ²λ μ μ§ μμΌλ©΄ default μ κ·Ό μ νμ κ°μ§λ€.
κ°μ ν¨ν€μ§ λ΄μμ μλ¬΄λ° μ ν μμ΄ μμ±μ νΈμΆ κ°λ₯νλ€.
2) public μ κ·Ό μ ν
ν΄λμ€κ° public μ κ·Ό μ νμ κ°μ§λ©΄, κ°μ ν¨ν€μ§λΏλ§ μλλΌ λ€λ₯Έ ν¨ν€μ§μμλ μλ¬΄λ° μ ν μμ΄ μ¬μ©ν μ μλ€.
public μ κ·Ό μ νμ: λ¨μ΄ λ» κ·Έλλ‘ μΈλΆ ν΄λμ€κ° μμ λ‘κ² μ¬μ©ν μ μλλ‘ νλ€.
λͺ¨λ ν¨ν€μ§μμ μ ν μμ΄ μμ±μ νΈμΆ κ°λ₯νλ€.
μμ ) ν΄λμ€μ μ κ·Ό μ ν(1)
package exam06.package1;
class A {} //default μ κ·Ό μ ν
μμ ) ν΄λμ€μ μ κ·Ό μ ν(2)
B ν΄λμ€λ A ν΄λμ€μ κ°μ ν¨ν€μ§μ΄λ―λ‘ A ν΄λμ€μ μ κ·Όμ΄ κ°λ₯νλ€.
package exam06.package1;
public class B {
//B ν΄λμ€λ A ν΄λμ€ ν¬ν¨νλ€.
//int a
//μ°Έμ‘° νμ
, μ°Έμ‘° λ³μ
//Aμ μλ λ©μλλ§ μ΄λ€.
A a; //A ν΄λμ€ μ κ·Ό κ°λ₯(νλλ‘ μ μΈν μ μλ€.)
}
μμ ) ν΄λμ€μ μ κ·Ό μ ν(3)
C ν΄λμ€λ A ν΄λμ€μ λ€λ₯Έ ν¨ν€μ§μ΄λ―λ‘ default μ κ·Ό μ νμ κ°λ A ν΄λμ€μλ μ κ·Όμ΄ λμ§ μμ§λ§, public μ κ·Ό μ νμ κ°λ B ν΄λμ€λ μ κ·Όμ΄ κ°λ₯νλ€. κ·Έλμ C ν΄λμ€μμ B ν΄λμ€λ₯Ό μ΄μ©νμ¬ νλ μ μΈ λ° μμ±μ/λ©μλ λ΄λΆμμ λ³μ μ μΈμ΄ κ°λ₯νλ€.
package exam06.package1;
public class C {
//Aν΄λμ€λ default μ κ·Όμ νμ (κ°μ ν¨ν€μ§μ μλ ν΄λμ€λ μ κ·Ό κ°λ₯νλ, λ€λ₯Έ ν¨ν€μ§μ μλ ν΄λμ€λ μ κ·Ό λΆκ°)
//A a;
//Bν΄λμ€λ public μ κ·Όμ νμ (κ°μ ν¨ν€μ§μ μλ ν΄λμ€λ μ κ·Ό κ°λ₯νλ, λ€λ₯Έ ν¨ν€μ§μ μλ ν΄λμ€λ μ κ·Ό κ°λ₯)
B b;
}
6.6.4 μμ±μμ μ κ·Ό μ ν p. 296
κ°μ²΄λ₯Ό μμ±νκΈ° μν΄μλ new μ°μ°μλ‘ μμ±μλ₯Ό νΈμΆνλ€. μμ±μλ₯Ό μ΄λμμλ νΈμΆ ν μ μλ κ²μ μλλ€.
μμ±μκ° μ΄λ€ μ κ·Ό μ νμ κ°λλμ λ°λΌ νΈμΆ κ°λ₯ μ¬λΆκ° κ²°μ λλ€.
μμ±μλ λ€μκ³Ό κ°μ΄ public, protected, default, private μ κ·Ό μ νμ κ°μ§λ€.
ex) μλ°λ‘ dbμ΄μ©ν λ νμ κ°μ μ 보μ μ κ·Ό μ체λ₯Ό λ§κΈ°
public class ClassName{
//public μ κ·Ό μ ν
public ClassName(...){...}
//protected μ κ·Ό μ ν
protected ClassName(...){...}
//default μ κ·Ό μ ν
ClassName(...){...}
//private μ κ·Ό μ ν
private ClassName(...){...}
}
μμ ) μμ±μμ μ κ·Ό μ ν(1)
package exam06.package1;
public class A {
//νλ
//int a; κΈ°λ³Ένμ
(μΈμ€ν΄μ€ νλ)
A a1 = new A(true); //μ°Έμ‘° νμ
A a2 = new A(1); //μ°Έμ‘°νμ
A a3 = new A("λ¬Έμμ΄");
//μμ±μ
public A(boolean b) {}
A(int b){} //default
private A(String s) {}
//λ©μλ
}
μμ ) μμ±μμ μ κ·Ό μ ν(2)
package exam06.package1;
public class B {
//B ν΄λμ€λ A ν΄λμ€ ν¬ν¨νλ€.
//νλ
//int a
//μ°Έμ‘° νμ
, μ°Έμ‘° λ³μ
//Aμ μλ λ©μλλ§ μ΄λ€.
A a1 = new A(true); //μ°Έμ‘° νμ
A a2 = new A(1); //μ°Έμ‘° νμ
//A a3 = new A("λ¬Έμμ΄"); //private μμ±μ μ κ·Ό λΆκ°(μ»΄νμΌ μλ¬)
}
μμ ) μμ±μμ μ κ·Ό μ ν(3)
package exam06.package2;
import exam06.package1.A;
public class C {
//νλ
//int a
//μ°Έμ‘° νμ
, μ°Έμ‘° λ³μ
//Aμ μλ λ©μλλ§ μ΄λ€.
A a1 = new A(true); //μ°Έμ‘° νμ
//A a2 = new A(1); //default μμ±μ μ κ·Ό λΆκ°(μ»΄νμΌ μλ¬)
//A a3 = new A("λ¬Έμμ΄"); //private μμ±μ μ κ·Ό λΆκ°(μ»΄νμΌ μλ¬)
}
6.6.5 νλμ λ©μλμ μ κ·Ό μ ν
μμ ) νλμ λ©μλμ μ κ·Όμ ν(1)
A ν΄λμ€ λ΄λΆμμλ μ κ·Ό μ νκ³Ό μκ΄μμ΄ νλμ λ©μλλ₯Ό λͺ¨λ μ¬μ©ν μ μλ€.
package exam06.package1;
public class A {
//νλ
public int field1; //public μ κ·Ό μ ν
int field2; //default μ κ·Ό μ ν
private int field3; //private μ κ·Ό μ ν
//μμ±μ
public A() {
field1 = 1;
field2 = 1;
field3 = 1;
method1();
method2();
method3();
}
//λ©μλ
public void method1() {}
void method2() {}
private void method3() {}
}
μμ ) νλμ λ©μλμ μ κ·Όμ ν(2)
ν¨ν€μ§κ° λμΌν B ν΄λμ€μμλ A ν΄λμ€μ private νλμ λ©μλλ₯Ό μ μΈν λ€λ₯Έ νλμ λ©μλλ μ¬μ©ν μ μλ€.
package exam06.package1;
public class B {
public B{
A a = new A();
a.field1 = 1; //μ κ·Όμ νμ: public(κ°μ ν¨ν€μ§O, λ€λ₯Έν¨ν€μ§O)
a.field2 = 1; //μ κ·Όμ νμ: default(κ°μ ν¨ν€μ§O, λ€λ₯Έν¨ν€μ§X)
//a.field3 = 1; //μ κ·Όμ νμ: private(κ°μ ν¨ν€μ§X, λ€λ₯Έν¨ν€μ§X)
a.method1(); //μ κ·Όμ νμ: public(κ°μ ν¨ν€μ§O, λ€λ₯Έν¨ν€μ§O)
a.method2(); //μ κ·Όμ νμ: default(κ°μ ν¨ν€μ§O, λ€λ₯Έν¨ν€μ§X)
//a.method3(); //μ κ·Όμ νμ: private(κ°μ ν¨ν€μ§X, λ€λ₯Έν¨ν€μ§X, κ°μ ν΄λμ€λ΄O) μ κ·Ό λΆκ°
}
}
μμ ) νλμ λ©μλμ μ κ·Όμ ν(3)
ν¨ν€μ§κ° λ€λ₯Έ C ν΄λμ€μμλ A ν΄λμ€μ public νλμ λ©μλλ₯Ό μ μΈν λ€λ₯Έ νλμ λ©μλλ μ¬μ©ν μ μλ€.
package exam06.package2;
import exam06.package1.A;
public class C {
public C() {
A a = new A();
a.field1 = 1; //μ κ·Όμ νμ: public(κ°μ ν¨ν€μ§O, λ€λ₯Έν¨ν€μ§O)
//a.field2 = 1; //μ κ·Όμ νμ: default(κ°μ ν¨ν€μ§O, λ€λ₯Έν¨ν€μ§X) μ κ·Ό λΆκ°
//a.field3 = 1; //μ κ·Όμ νμ: private(κ°μ ν¨ν€μ§X, λ€λ₯Έν¨ν€μ§X) μ κ·Ό λΆκ°
a.method1(); //μ κ·Όμ νμ: public(κ°μ ν¨ν€μ§O, λ€λ₯Έν¨ν€μ§O)
//a.method2(); //μ κ·Όμ νμ: default(κ°μ ν¨ν€μ§O, λ€λ₯Έν¨ν€μ§X) μ κ·Ό λΆκ°
//a.method3(); //μ κ·Όμ νμ: private(κ°μ ν¨ν€μ§X, λ€λ₯Έν¨ν€μ§X, κ°μ ν΄λμ€λ΄O) μ κ·Ό λΆκ°
}
}
6.6.6 Getterμ Setter λ©μλ p. 301
μΌλ°μ μΌλ‘ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μμλ κ°μ²΄μ νλλ₯Ό κ°μ²΄ μΈλΆμμ μ§μ μ μΌλ‘ μ κ·Όνλ κ²μ λ§λλ€. μΈλΆμμ λ§μλλ‘ λ³κ²½ν κ²½μ° κ°μ²΄μ 무결μ±(κ²°μ μ΄ μλ μ±μ§)μ΄ κΉ¨μ§ μ μκΈ° λλ¬Έμ΄λ€.
ex) μλμ°¨μ μλ ₯μ μμX, μΈλΆμμ μμλ‘ λ³κ²½νλ©΄ κ°μ²΄μ 무결μ±μ΄ κΉ¨μ§λ€.
μ΄λ¬ν λ¬Έμ μ μ ν΄κ²°νκΈ° μν΄ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μμλ λ©μλλ₯Ό ν΅ν΄μ νλλ₯Ό λ³κ²½νλ λ°©λ²μ μ νΈνλ€. νλλ μΈλΆμμ μ κ·Όν μ μλλ‘ λ§κ³ λ©μλλ 곡κ°ν΄μ μΈλΆμμ λ©μλλ₯Ό ν΅ν΄ νλμ μ κ·Όνλλ‘ μ λνλ€. λ©μλλ 맀κ°κ°μ κ²μ¦ν΄μ μ ν¨ν κ°λ§ κ°μ²΄μ νλλ‘ μ μ₯ν μ μκΈ° λλ¬Έμ΄λ€.
νλλ μΈλΆμμ μ κ·Όν μ μλλ‘ λ§κ³ λ©μλλ 곡κ°ν΄μ μΈλΆμμ λ©μλλ₯Ό ν΅ν΄ νλμ μ κ·Όνλλ‘ μ λνλ€.
νλμ κ°μ μΈλΆλ‘ 리ν΄ν΄μ£Όλ λ©μλλ₯Ό GetterλΌκ³ νκ³
μΈλΆμμ κ°μ λ°μ νλλ₯Ό λ³κ²½νλ λ©μλλ₯Ό SetterλΌκ³ νλ€.
Setter: μΈλΆμμ κ°μ λ°μ νλλ₯Ό λ³κ²½νλ λ©μλμ΄λ€.
Getter: νλμ κ°μ μΈλΆλ‘ 리ν΄ν΄μ£Όλ λ©μλμ΄λ€. λ©μλλ‘ νλκ°μ κ°κ³΅ν ν μΈλΆλ‘ μ λ¬νλ€.
set: μ μ₯νλ€.
get: μ μ₯λ κ±° κ°μ Έμ¨λ€.
SETμ λ³μκ°μ ν λΉνλ λͺ©μ μ ν¨μμ΄κΈ° λλ¬Έμ μΈμλ₯Ό λ°μμΌ νκ³
GETμ λ³μκ°μ λ°ννλ λͺ©μ μ΄κΈ° λλ¬Έμ returnμ΄ νμνλ€.
ν΄λμ€λ₯Ό μ μΈν λ κ°λ₯νλ€λ©΄ νλλ₯Ό privateμΌλ‘ μ μΈν΄μ μΈλΆλ‘λΆν° 보νΈνκ³ , νλμ λν Setterμ Getter λ©μλλ₯Ό μμ±ν΄μ νλκ°μ μμ νκ² λ³κ²½/μ¬μ©νλ κ²μ΄ μ’λ€.
μ°Έκ³ : https://www.geeksforgeeks.org/getter-and-setter-in-java/
νλ νμ
μ΄ booleanμΌ κ²½μ° Getterλ get λμ isλ‘ μμνλ κ²μ΄ κ΄λ‘μ΄λ€.
private boolean stop; //νλ μ κ·Ό μ νμ: boolean
//Getter //μ μ₯λ κ±° κ°μ Έμ¨λ€.
public boolean isStop(){ //μ κ·Ό μ νμ: public, λ¦¬ν΄ νμ
: νλ νμ
return stop; //λ©μλ μ΄λ¦: is+νλνμ
(첫 κΈμλ λλ¬Έμ), 리ν΄κ°: νλκ°
}
//Setter //μ μ₯νλ€.
public void setStop(boolean stop){
this.stop = stop;
}
λ§μ½ μΈλΆμμ νλκ°μ μ½μ μλ§ μκ³ λ³κ²½νμ§ λͺ»νλλ‘ νλ €λ©΄(μ½κΈ° μ μ©) Getter λ©μλλ§ μ μΈν΄λ μ’κ³ ,
μλλ©΄ Setter λ©μλκ° private μ κ·Ό μ νμ κ°λλ‘ μ μΈν΄λ μ’λ€.
Car ν΄λμ€μ speedμ stop νλμ λν Getterμ Setterμ μμ±ν κ²μ΄λ€.
μμ 1) Getterμ Setter λ©μλ μ μΈ
public class Car4 {
//νλ
//μΈλΆμμ μ κ·Όν μ μλλ‘ λ§κ³
private int speed;
private boolean stop;
//μμ±μ
//getter / setter λ©μλ
public int getSpeed() {
return speed;
}
public void setSpeed(int speed) {
//λ§μ½μ speed κ°μ΄ μμμ΄λ©΄
if (speed<0) {
//μ무κ²λ μ νκ³ setSpeed λ©μλ μ’
λ£
return;
}else {//speedκ°μ΄ μμμ΄λ©΄
//speedνλμ κ°μ μ μ₯νλ€.
this.speed = speed;
}
}
public boolean isStop() {
return stop;//κΈ°λ³Έκ°:false
}
public void setStop(boolean stop) {
this.stop = stop;
this.speed = 0;
}
}
μμ 2) Getterμ Setter λ©μλ μ¬μ©
stop νλμ Getter(isStop()) 리ν΄κ°μ΄ falseμΈ κ²½μ°, trueλ‘ λ§λ€κ³ (μλ 리ν΄κ°μ΄ λμ΄κ° λ)
μλμ°¨λ₯Ό λ©μΆκΈ° μν΄ Setter(setStop(true))λ₯Ό νΈμΆν΄μ stop νλλ₯Ό trueλ‘, speed νλλ₯Ό 0μΌλ‘ λ³κ²½νλ€.
(μ€μν κ²μ get, setμ΄λ€.)
public class Car5Example {
public static void main(String[] args) {
Car5 myCar = new Car5();
//μλͺ»λ μλ λ³κ²½
myCar.setSpeed(-50);
System.out.println("νμ¬ μλ: "+myCar.getSpeed());
//μ¬λ°λ₯Έ μλ λ³κ²½
myCar.setSpeed(60);
//System.out.println("myCar.isStop(): "+myCar.isStop()); //false
//System.out.println("!myCar.isStop(): "+!myCar.isStop()); //true
//λ©μΆ€
// λ©μΆλ λ©μλ νΈμΆ
// => μ°¨λμ΄ μμ§μΌ κ²½μ°μλ§ νΈμΆ
//μ°¨λμ΄ μμ§μ΄λμ§ νμΈ(isStopκ°μ΄ false μΌ κ²½μ°) 리ν΄μ κΈ°λ³Έκ°μ΄ falseλ‘ λμ΄κ°λ©΄
if(!myCar.isStop()) {
myCar.setStop(true);
}
/* if(myCar.isStop()) {
myCar.setStop(false);
}else {
myCar.setStop(true);
}*/
//System.out.println("myCar.isStop(): "+myCar.isStop()); //true
//System.out.println("!myCar.isStop(): "+!myCar.isStop()); //false
System.out.println("νμ¬ μλ: "+myCar.getSpeed());
}
}
μ°Έκ³ : https://velog.io/@luvaa/%EC%A0%91%EA%B7%BC%EC%A0%9C%ED%95%9C%EC%9E%90
λ§λ¬΄λ¦¬ p. 306
4κ°μ§ ν€μλλ‘ λλ΄λ ν΅μ¬ ν¬μΈνΈ
1) ν¨ν€μ§ μ μΈ: ν΄λΉ ν΄λμ€ λλ μΈν°νμ΄μ€κ° μ΄λ€ ν¨ν€μ§μ μν κ²μΈμ§λ₯Ό μ μΈνλ κ²μ΄λ€.
μμ€ νμΌμ μ΅μλ¨μ μμΉνλ©° λ€μκ³Ό κ°μ΄ μμ±νλ€.
package μμν¨ν€μ§.νμν¨ν€μ§;
2) importλ¬Έ: μ¬μ©νκ³ μ νλ ν΄λμ€ λλ μΈν°νμ΄μ€κ° λ€λ₯Έ ν¨ν€μ§μ μμλμ΄ μλ€λ©΄, importλ¬ΈμΌλ‘ ν΄λΉ ν¨ν€μ§μ ν΄λμ€ λλ μΈν°νμ΄μ€λ₯Ό κ°μ Έμ μ¬μ©ν κ²μμ μ»΄νμΌλ¬μκ² μλ €μ€μΌ νλ€.
import μμν¨ν€μ§.νμν¨ν€μ§.ν΄λμ€μ΄λ¦;
import μμν¨ν€μ§.νμν¨ν€μ§.*;
3) μ κ·Όμ νμ: ν΄λμ€μ μΈν°νμ΄μ€λ₯Ό λ€λ₯Έ ν¨ν€μ§μμ μ¬μ©νμ§ λͺ»νλλ‘ λ§μ νμκ° μλ€. κ·Έλ¦¬κ³ κ°μ²΄ μμ±μ λ§κΈ° μν΄ μμ±μλ₯Ό νΈμΆνμ§ λͺ»νκ² νκ±°λ νλλ λ©μλλ₯Ό μ¬μ©νμ§ λͺ»νλλ‘ λ§μμΌ λλ κ²½μ°λ μλ€.
μ΄λ μ κ·Ό μ νμλ₯Ό μ¬μ©ν μ μλ€.
[μ κ·Ό μ νμ μ’
λ₯μ μ μ©ν λμ]
μ κ·Ό μ ν | μ μ© λμ | μ κ·Όν μ μλ ν΄λμ€ |
1) public | ν΄λμ€, νλ, μμ±μ, λ©μλ | μμ |
2) protected | νλ, μμ±μ, λ©μλ | μμ ν΄λμ€κ° μλ λ€λ₯Έ ν¨ν€μ§μ μμλ ν΄λμ€ |
3) default | ν΄λμ€, νλ, μμ±μ, λ©μλ | λ€λ₯Έ ν¨ν€μ§μ μμλ ν΄λμ€ |
4) private | νλ, μμ±μ, λ©μλ | λͺ¨λ μΈλΆ ν΄λμ€ |
μ κ·Ό μ νμ
public: μ κ·Ό μ νμ΄ μλ€.
protected: κ°μ ν¨ν€μ§μ μλ ν΄λμ€λ μ κ·Ό κ°λ₯, λ€λ₯Έ ν¨ν€μ§μ μλ ν΄λμ€λ μ κ·Ό λΆκ°λ₯
* μμμ νλ©΄ λ€λ₯Έ ν¨ν€μ§μ μλ ν΄λμ€λ μ κ·Ό κ°λ₯ *
(default): κ°μ ν¨ν€μ§μ μλ ν΄λμ€λ μ κ·Ό κ°λ₯, λ€λ₯Έ ν¨ν€μ§μ μλ ν΄λμ€λ μ κ·Ό λΆκ°λ₯
* μμμ ν΄λ λ€λ₯Έ ν¨ν€μ§μ μλ ν΄λμ€ μ κ·Ό λΆκ°λ₯ *
private: μΈλΆμμ μ κ·Όμ΄ λΆκ°λ₯(κ°μ ν΄λμ€ λ΄μμλ§ μ κ·Ό)
μ κ·Ό μ μ΄μ | κ°μ ν΄λμ€μ λ©€λ² | κ°μ ν¨ν€μ§μ λ©€λ² | μμ ν΄λμ€μ λ©€λ² | κ·Έ μΈμ μμ |
public | β | β | β | β |
protected | β | β | β | X |
default | β | β | X | X |
private | β | X | X | X |
4) Getter/Setter: νλλ μΈλΆμμ μ κ·Όν μ μλλ‘ λ§κ³ λ©μλλ 곡κ°ν΄μ μΈλΆμμ λ©μλλ₯Ό ν΅ν΄ νλμ μ κ·Όνλλ‘ μ λνλ€. νλμ κ°μ μΈλΆλ‘ 리ν΄ν΄μ£Όλ λ©μλλ₯Ό GetterλΌκ³ νκ³
μΈλΆμμ κ°μ λ°μ νλλ₯Ό λ³κ²½νλ λ©μλλ₯Ό SetterλΌκ³ νλ€.