java notas de estudio 8: Método de tipo de retorno y argumentos tipos, clases internas, las clases internas anónimas

En primer lugar, un tipo de retorno método y argumento tipos
1, en forma de parámetros
① a un tipo básico de un tipo básico de variables o valores constantes específica
② tiempo para el nombre de clase de una clase de objeto
③ nombre de la clase abstracta a es una clase heredada de un tiempo objeto de subclase
④ es hora de interfaz es los implementos de interfaz de un objeto de subclase
2, el tipo de retorno
① es el tipo de datos básico se devuelve cuando una específica valor de
② es el tipo de datos básico se devuelve cuando un valor específico
③ nombre de la clase abstracta debe ser devuelto cuando se hereda de la clase un objeto subclase
④ se devuelve cuando el nombre de la interfaz es una implementación de la interfaz objeto de subclase

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

El valor de retorno

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

En segundo lugar, la clase interna
a la definición de clases dentro de las otras clases, la clase conocida como clases internas.
1, cuenta con ::
① clase interna puede acceder directamente a los miembros externos de la clase, incluyendo privada.
② Para acceder a los miembros de la clase externa dentro de la clase, debe crear el objeto.
2, de acuerdo con la definición de la clase en la posición interior, miembros de la clase y de las clases interiores internos locales

class B{
    class A{} //成员内部类
    public void  show(){
        class C{}//局部内部类
    }
}

miembros de la clase de acceso dentro y fuera del formato interno: nombre de la clase dentro de la clase nombre de nombre de objeto externo = objeto de clase de objeto externo interno ;.

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();
		}	
	}

El acceso local interno de clase variables locales:
① acceso a los miembros fuera de clase directa
② puede crear un objeto de la clase interna por objeto llama a un método de clase interno para utilizar una función local clase interna
③ variables locales de acceso clase interna local deben ser modificados por el final; ya que las variables locales se completa con la llamada al método va a desaparecer, esta vez, los objetos locales no desaparecen inmediatamente de la memoria del montón, sino también para utilizar esa variable. Para que los datos pueden seguir siendo utilizados, el uso fianl modificado de modo que, de hecho, es un valor constante en el interior almacenado memoria de pila.

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() ;
	}
}

En tercer lugar, las clases internas anónimas
1 es una redacción simplificada parcial dentro de la clase.
2, con la condición de: la presencia de una clase o interfaz; este documento pueden ser de una clase en particular puede ser clase abstracta.
3, formato:

new 类名或者接口名(){
			重写方法;
		} ;

4, es esencialmente una clase heredada o subclase que implementa esta interfaz objeto anónimo.

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方法
Publicado 24 artículos originales · ganado elogios 11 · vistas 2060

Supongo que te gusta

Origin blog.csdn.net/weixin_43791069/article/details/85241161
Recomendado
Clasificación