우선, 방법 리턴 형과 인수 유형
파라미터의 형태 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方法