728x90
반응형
public class fourth {
public static void main(String[] args)
{
Calculator c1 = new Calculator();
c1.setOprands(10,35);
c1.sumDecoPlus();
c1.sumDecoMinus();
Calculator c2 = new Calculator();
c2.sumDecoPlus();
c2.sumDecoMinus();
B b1 = new B();
b1.d();
}
}
class Calculator{
//final은 값을 바꾸지 못하도록 한다.
static final double PI = 3.14;
//private 가장 엄격 같은 패키지 및 같은 클래스 안에서만
private int left=1;
private int right=3;
//public 가장 자유롭게 사용
public void setOprands(int left, int right){
//this는 c1과 c2의 클래스 인스턴스를 구분하기 위해서 쓰인다.
this.left = left;
this.right = right;
}
private int _sum(){
//클래스의 인스턴스 인지 아닌지가 명확해서 this 불필요
return left+right;
}
public void sumDecoPlus(){
System.out.println("++++"+_sum()+"++++");
}
public void sumDecoMinus(){
System.out.println("----"+_sum()+"----");
}
}
//abstract(추상) 메소드가 하나라도 존재하면 추상 클래스가 된다.
abstract class A
{
//내용이 있는 메소드는 abstract를 가질 수 없다..!
public abstract int b();
//final로 선언된 메소드는 오버라이딩이 불가능하다.
//final로 선언된 클래스는 상속이 불가능하다.
final void c() {
}
public void d()
{
System.out.println("Hello,World! I am Abstract class");
}
}
//abstract 클래스를 상속으로 사용하면 메소드를 반드시 오버라이딩 해야한다.
class B extends A
{
@Override
public int b() {
return 0;
}
}
//인터페이스 선언
interface I
{
//인터페이스에 존재하는 메소드 선언
//멤버는 반드시 public 이어야 한다.(외부에서 조작해야 하기 때문)
public void z();
}
interface V
{
public void kk();
}
//인터페이스도 상속이 가능하다.
interface Z extends V
{
public void ex();
}
//class I_use는 인터페이스 I를 구현한다.
class I_use implements I,V
{
//인터페이스에 선언된 메소드를 구현하는 것을 강제한다.
public void z()
{
System.out.println("This is Interface");
}
public void kk()
{
System.out.println("여러개의 인터페이스를 포함 할 수 있습니다.");
}
}

- 접근 제어자는 사용자가 객체 내부의 변수나 메소드에 접근함으로써 발생 가능한 오작동을 방지하기 위해 존재한다.
- 인터페이스, 추상(abstract), final은 규제를 위해 사용된다.
- 추상 메소드를 가진 클래스는 반드시 추상 클래스가 되어야 한다.
- 추상 클래스는 상속을 이용해서만 사용 가능하다.
- 추상 클래스를 상속할 때 추상 메소드를 오버라이딩 해줘야 한다.
- 추상 메소드는 구체적인 내용을 가질 수 없다.(선언만 해야 함)
- 추상화는 대규모 작업에서 설계상 이점을 제공한다. 중복 코드 감소, 생산성+가독성 증가, 에러 감소, 유지 보수 시간 단축 등이다.
- 추상 클래스는 추상 메소드와 일반 메소드도 포함 가능하다.
- 인터페이스는 only 추상 메소드와 상수만 포함한다.
- 추상 클래스는 다중 상속을 지원하지 않지만 인터페이스와 일반 클래스는 지원한다.
- final은 abstract와는 다르게 변수값의 수정, 클래스 상속, 메소드 오버라이딩을 금지한다.
- 인터페이스에 존재하는 메소드를 implement 한 class에서 반드시 구현해야 한다.
- 인터페이스는 가짜 로직을 상정하고 만들 수 있기 때문에 개발 계획에 용이하다.
- 하나의 클래스로 여러 개의 인터페이스를 구현할 수 있다.
- 인터페이스도 상속이 가능하다.
- 인터페이스의 멤버는 반드시 public이다.(클래스에서 implement 해야 하기 때문에.)
728x90
반응형
'Programming languages > JAVA' 카테고리의 다른 글
자바 기초 (0) | 2023.04.16 |
---|---|
4. 오버로딩, 오버라이딩, 상속 (0) | 2023.01.29 |
3. 클래스, 메소드, 인스턴스, Static (0) | 2023.01.25 |
2. 조건문, 반복문,배열 (0) | 2023.01.25 |
1. 변수, 주석, 형변환, 연산자 (0) | 2023.01.25 |