1개 파일 = 클래스 = 객체
종류
1. 멤버에 있는 내부클래스
public class OuterTest {
int num =1234;
String name = "세종대왕";
public OuterTest() {
System.out.println("OuterTest() 생성자확인");
}
public void outerPrint() {
System.out.println(num + " -> " + name);
//외부클래스에서는 내부 클래스의 정보를 사용할수 없다.
//객체로 만들면 사용이 가능하다.
//System.out.println(no +" ===> "+ username);
//내부클래스 객체 만들기 - 현재 클래스(외부클래스) 내에서 내부 클래스를 객체 생성가능하다.
//메소드내의 내부클레스는 메소드 호출시 생성된다.
InnerTest it = new InnerTest();
it.innerPrint();
}
//내부 클래스(멤버)
class InnerTest{
int no = 6789;
String username = "이순신";
InnerTest(){
System.out.println("InnerTest() 생성자 확인");
}
public void innerPrint() {
System.out.println(no + " =======> " + username);
//내부 클래스에서는 외부 클래스의 정보를 사용할 수 있다.
System.out.println(num + "======> " + name);
}
}
public static void main(String[] args) {
OuterTest ot = new OuterTest();
ot.outerPrint();
//외부에서 내부클래스 객체를 생성하기 위해서는 외부 클래스 객체를 이용하여 내부 클래스 객체를 생성하여야한다.
OuterTest ot2 = new OuterTest();
OuterTest.InnerTest it = ot2.new InnerTest();
it.innerPrint();
}
}
2. 메소드 내에 있는 내부클래스
public class MethodInnerClass {
String email = "kangsan@tstory.com";
public MethodInnerClass() {
}
public void output() {
System.out.println("이메일 ==> " + email);
}
public void innerClassMethod() {
int num = 100;
//메소드에 정의된 내부 클래스
class InnerCreate{
String name = "홍길동";
InnerCreate(){
}
void InnerPrint() {
System.out.println("name-----> " + name );
System.out.println("num ----> " + num);
System.out.println("email ---> " + email);
output();
}
}//
//객체생성
InnerCreate ic = new InnerCreate();
ic.InnerPrint();
}
public static void main(String[] args) {
MethodInnerClass mic = new MethodInnerClass();
mic.innerClassMethod();
}
}
3. 익명의 내부 클래스
public class Sample implements SampleImp{
public Sample() {
}
public void sum(int max) {
int sum = 0;
for (int i = 0; i <= max; i++) {
sum += i;
}
System.out.println("1~ "+ max +" 합은 " + sum );
}
public void evenSum(int max) {
}
public void oddsum(int max) {
// TODO Auto-generated method stub
}
}
public interface SampleImp {
public void oddsum(int max); //추상메소드
public void evenSum(int max); //추상메소드
}
public class AnomTest {
public AnomTest() {
start();
}
public void start() {
//내부의 익명메소드
new Sample() {
//실행부
public void oddSum(int max) { //sample 클래스의 메소드 오버라이딩
int s=0;
for(int i=1; i<=max; i+=2) {
s = s+i;
}
System.out.println("1~ " + max + "까지의 홀수의 합은 " + s);
}
}.oddSum(100);
}
public static void main(String args[]) {
new AnomTest();
}
}
'language > java이론' 카테고리의 다른 글
[java,자바] 컬렉션 프레임워크 collection framework (0) | 2021.01.07 |
---|---|
[java,자바] 예외처리 try catch 정리 (0) | 2021.01.06 |
[java,자바] 접근제한자 public,protected,default,private (0) | 2020.12.30 |
[java,자바] 상속하는 방법 (0) | 2020.12.30 |
[java,자바] String 주요 메소드 정리 (0) | 2020.12.29 |
최근댓글