자바 연구 노트 8 : 방법 반환 형식 및 인수 유형, 내부 클래스, 익명의 내부 클래스

우선, 방법 리턴 형과 인수 유형
파라미터의 형태 1,
변수 또는 상수 값이 특정의 기본적인 형태의 기본형에 ①
객체 클래스의 클래스 이름 시간 ②
③ 추상 클래스 이름 서브 클래스에 오브젝트 시간으로부터 상속되는 클래스
④ 인터페이스 시간 서브 클래스 오브젝트 인터페이스 구현이다
2 리턴 타입
의 기본 데이터 형식을 특정 리턴이다 ① 값
② 특정 값 때 기본 데이터 타입이 반환된다
③ 추상 클래스 이름이 서브 객체 클래스에서 상속이 때 반환되는
인터페이스 이름이 인터페이스의 구현 인 경우 ④ 리턴 서브 클래스 객체

传参
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;
    }

둘째, 내부 클래스
다른 클래스 내의 클래스 정의에, 내부 클래스로 알려진 클래스.
(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();
		}	
	}

로컬 내부 클래스 액세스 로컬 변수 :
① 외부 직접 클래스의 멤버에 대한 액세스
개체가 로컬 내부 클래스 기능을 사용하는 내부 클래스 메소드 호출에 의해 내부 클래스 객체를 생성 할 수 ②
③ 지역 내부 클래스 액세스 로컬 변수가 마지막으로 수정되어야; 로컬 변수 때문에 메소드 호출은, 이번에 사라지고 완료와 로컬 객체 즉시 힙 메모리에서 사라지지되지만, 해당 변수를 사용. 데이터를 계속 사용할 수 있도록하기 위해 사용 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() ;
	}
}

셋째, 익명 내부 클래스
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方法
게시 24 개 원래 기사 · 원의 찬양 (11) · 전망 2060

추천

출처blog.csdn.net/weixin_43791069/article/details/85241161