java学习笔记8:方法参数类型以及返回值类型、内部类、匿名内部类
2018-12-26 02:34
393 查看
一、方法参数类型以及返回值类型
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(); } }
局部内部类访问局部变量:
①可以直接访问外部类的成员
②可以创建内部类对象,通过对象调用内部类方法,来使用局部内部类功能
③局部内部类访问局部变量必须用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() ; } }
三、匿名内部类
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方法
相关文章推荐
- Java之方法参数类型以及返回值问题研究、权限修饰符 、内部类、匿名内部类
- 用类名做方法的返回值类型 在学习Java的初始阶段,很多同学使用基本数据类型定义变量和引用类型定义变量以及使用类名做方法的返回值类型常常不知所以。今天我以自己的解读方式和个人的理解作一个简单的解释,和
- Java基础学习笔记十二 类、抽象类、接口作为方法参数和返回值以及常用API
- java学习笔记(四)----对象、数组作为参数传递,静态变量、静态方法的使用,内部类,使用文档注释
- C#学习笔记-索引器,指针类型,隐式类型,扩展方法,分部方法,匿名类型
- haXe学习笔记:写一个支持类型参数的静态方法
- JAVA匿名内部类不能访问外部类方法中的局部变量,除非变量被声明为final类型
- java学习笔记---Java可变参数方法重载时要注意的几个问题
- java方法签名中参数和返回类型字母含义
- 【Java学习笔记之二十七】Java8中传多个参数时的方法
- java学习笔记---协变返回类型
- 我的java学习笔记(11)关于装箱、参数可变方法和枚举类型
- [读书笔记]C#学习笔记四: C#2.0泛型 可控类型 匿名方法和迭代器
- JAVA学习笔记3--类,对象,变量,方法,构造方法,this,引用类型
- Java学习笔记-匿名内部类
- java学习笔记21——匿名内部类
- restlet2.1 学习笔记(四) 获取、返回XML类型参数
- [javase学习笔记]-6.5 类类型参数与匿名对象
- java匿名内部类的参数为final类型
- java学习笔记(六)之匿名内部类