목록전체 글 (75)
Super Coding Addict
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/b36VLG/btqYW2ydqrv/duDCw3qPKiejgrIZQxB6W1/img.png)
* Class 클래스 - 자바의 모든 클래스와 인터페이스는 컴파일 후 class 파일로 생성된다 - class파일에는 객체의 정보(멤버변수, 메서드, 생성자 등)가 포함되어 있다 - Class 클래스는 컴파일된 class파일에서 객체의 정보를 가져올 수 있다 - 동적 로딩할 때 많이 씀 - 로컬에 자료형(모듈)이 없는 경우에도 씀 * Class 클래스 가져오기 1. String s = new String(); Class c = s.getClass(); --> getClass()메서드는 Object의 메서드 2. Class c = String.Class; 3. 동적로딩 -- 런타임때 바인딩이 됨 cf. 정적로딩 -- 컴파일타임 때 => 그때그때 내 필요에 맞게 원하는 라이브러리/클래스를 매칭시킬 수 있다는..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/b2CvSU/btqYE8HcNsV/S5mftrFcYcs0y1Ek0nW0Z1/img.png)
- 예제 package ch10.object; class Student{ int studentNum; String studentName; public Student(int studentNum, String studentName) { this.studentNum = studentNum; this.studentName = studentName; } @Override public boolean equals(Object obj) { if( obj instanceof Student) { Student std = (Student)obj; //다운캐스팅 return (this.studentNum == std.studentNum); } return false; } @Override public int hashCode(..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cvqO5H/btqYW3cOfHG/RyhzTElEyPh8dY8kruQmZ1/img.png)
* equals()메서드 - 두 객체의 동일함을 논리적으로 재정의 할 수 있음 물리적 동일함 : 같은 메모리 주소를 가지는 객체 논리적 동일함 : 같은 학번의 학생 등처럼 논리적으로는 동일한 객체 => 물리적으로는 다른 메모리에 위치한 객체이더라도, 논리적으로는 동일함을 구현하기 위해 사용하는 메서드 - 예제 # EquaslTest 클래스 package ch10.object; public class EqualsTest { public static void main(String[] args) { String str1 = new String("abc"); String str2 = new String("abc"); System.out.println(str1 == str2);//메모리 주소 비교 System.o..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/yTvfY/btqYLzRbYNt/9iDeqvdTALPl7d0zGS1X30/img.png)
* Object 클래스 - java.lang.Object 클래스 - 모든 클래스의 최상위 클래스 => 모든 클래스는 Object 클래스에서 상속을 받음 => 모든 클래스는 Object 클래스의 메서드를 사용 가능 => 모든 클래스는 Object 클래스의 일부 메서드 재정의하여 사용 가능 (final로 정의된 메서드들은 재정의 불가) - 예제 # ToStringTest 클래스 package ch10.object; class Book{ String title; String author; public Book(String title, String author) { this.title = title; this.author = author; } @Override public String..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/4rgQw/btqYN2kPOK6/aaJ1jtzA8VapTAyujuv9AK/img.png)
* 익명 이너클래스 - 하나의 인터페이스나 하나의 추상클래스에 대해서 바로 생성을 할 수 있다 (원래 인터페이스나 추상클래스를 생성하려면 상속을 받은 클래스를 만들고 생성해서 써야하는 데) --> 안드로이드 위젯 핸들링할 때 (버튼이나 텍스트 박스 등) 화면 터치나 클릭하는 일들이 있는데, 거기서 사용되는 모든 위젯 핸들러들을 이런 익명 이너클래스를 사용 - 지역 내부 클래스 예제 # LocalInnerClass 클래스 package ch12.innerclass; class Outer{ int outNum = 100; static int sNum = 200; Runnable getRunnable(int i) { int num = 100; //상수 (i도 상수임) class MyRunnable implem..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bwPkQ5/btqYN01BeV7/vYxNyIOyIoXKmXK4TxO1dk/img.png)
* 내부 클래스? - 클래스 내부에 구현한 클래스 - 클래스 내부에서 사용하기 위해 선언하고 구현하는 클래스 * 내부 클래스 유형 - 인스턴스 내부 클래스 / 정적 내부 클래스 / 지역 내부 클래스 / 익명 내부 클래스 - 예제 # InnerTest 클래스 package ch12.innerclass; class OutClass{ private int num = 10; private static int sNum = 20; private InClass inClass; public OutClass() { inClass = new InClass(); } class InClass{ int iNum = 100; //*static int sInNum = 200; --> InClass가 static..