java 학습노트8: 방법 매개 변수 유형 및 반환값 유형, 내부 클래스, 익명 내부 클래스
public class MyTest {
public static void main(String[] args) {
Student student = new Student();
student.setStudent(new Student()," ");
Cat cat = new Cat();
Animal an = new Cat();
setAnimal(an);
System.out.println("---------------");
setInterface(new MyClass());
}
public static void setAnimal(Animal an) {
an.eat();
}
public static void setInterface(MyInterface myInterface) {
myInterface.test();
}
}
interface MyInterface {
void test();
}
class MyClass implements MyInterface{
@Override
public void test() {
System.out.println(" ");
}
}
class Student {
String name;
public void setStudent(Student s,String mz){
s.name=mz;
}
}
반환값
public static Animal getAnimal(){
return new Dog();
}
public static MyInterface getInterface(){
return new MyClass();
}
public Teacher getTeacher(Teacher teacher,String mz){
teacher.name=mz;
return this;
}
2. 내부 클래스는 클래스를 다른 클래스의 내부에 정의하는데 이 클래스는 내부 클래스라고 부른다.1. 특징: ① 내부 클래스는 외부 클래스의 구성원을 직접 방문할 수 있으며 사유를 포함한다.② 외부 클래스가 내부 클래스의 구성원에게 액세스하려면 객체를 작성해야 합니다.2. 내부 클래스의 정의 위치에 따라 구성원 내부 클래스와 국부 내부 클래스로 나뉜다.
class B{
class A{} //
public void show(){
class C{}//
}
}
구성원 내부 클래스 접근 외부 내부 형식: 외부 클래스 이름.내부 클래스 대상 이름 = 외부 클래스 대상.내부 클래스 대상;
class Outer {
public int num = 10;
class Inner {
public int num = 20;
public void show() {
int num = 30;
System.out.println(num);//30
System.out.println(Inner.this.num);//20
System.out.println(Outer.this.num);//10
}
}
}
class InnerClassTest {
public static void main(String[] args) {
Outer.Inner oi = new Outer().new Inner();
oi.show();
}
}
국부 내부 클래스 접근 국부 변수: ① 외부 클래스에 직접 접근할 수 있는 구성원 ② 내부 클래스 대상을 만들 수 있다. 대상을 통해 내부 클래스 방법을 호출하여 국부 내부 클래스 기능을 사용한다. ③ 국부 내부 클래스 접근 국부 변수는final로 수식해야 한다.국부 변수는 방법의 호출이 완료됨에 따라 사라지기 때문에 이때 국부 대상은 즉시 메모리에서 사라지지 않고 그 변수를 사용해야 한다.데이터가 계속 사용될 수 있도록fianl로 수식하면 메모리에 저장된 것은 사실상 상수값이다.
class Outer {
//
private int a = 45 ;
//
public void show() {
final int b = 45 ;//JDK1.7 final JDK1.8
class Inner {
public void method(){
System.out.println(a) ;//45
System.out.println(b) ;//45
}
}
Inner i = new Inner() ;
i.method() ;
}
}
class InnerClassDemo6 {
public static void main(String[] args) {
Outer out = new Outer() ;
out.show() ;
}
}
3. 익명 내부 클래스 1, 즉 국부 내부 클래스의 간략한 쓰기.2. 전제: 하나의 종류나 인터페이스가 존재한다.이곳의 종류는 구체류일 수도 있고 추상류일 수도 있다.3. 형식:
new (){
;
} ;
4. 본질은 이 클래스를 계승하거나 이 인터페이스를 실현한 하위 클래스의 익명 대상이다.
public class MyTest {
public static void main(String[] args) {
//
setFu(new Fu() {
@Override
public void show() {
System.out.println(" show ");
}
});
Zi zi = new Zi();
setFu(zi);
}
public static void setFu(Fu f){
f.show();
}
}
abstract class Fu {
public abstract void show();
}
class Zi extends Fu{
@Override
public void show() {
System.out.println(" show ");
}
}
// : show
// show
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.