🤖 AI文章摘要 qwen-turbo-latest
加载中...

Java多态

函数重载

和C++一致

函数重写

Java的类方法相当于C++的虚函数, abstract修饰的类方法时相当于C++的纯虚函数, 拥有抽象方法的类是抽象类 打印函数其实接收的是Obeject类, 父类指针指向子类对象, 这里使用了多态, 然后调用了父类的toString方法

对象转型

instanceof

语法糖

可以使用Java提供的匿名内部类进行类继承与接口实现,当匿名内部类需要访问外部变量时,这个变量应该被final修饰

  MyClass myObject = new MyClass(){ /*子类定义*/ }
MyInterface myObject = new MyInterface(){ /*实现类定义*/ }
  

若接口是函数式接口,那该接口可以通过Lambda表达式实现并实例化。

  MyInterface myObject = (arg1, arg2, ...) ->{/*函数式接口中方法的定义*/}
  
  • Lambda能捕获局部对象的引用
  • 若接口的参数的类型是固定的或泛型可以根据形参推导, 则可省略参数类型
  • 若接口只有一个参数则可以省略()
  • 若代码体只有一行代码则可以省略{} 、分号以及return, 返回值就是这行代码的返回值

当函数式接口的方法返回值和参数列表和已知的方法相同时, 可以通过方法引用

  • 非静态方法引用类对象::非静态方法,注意类对象必须已经存在, 注意类中this和super也是可以用的
  • 静态方法引用类::静态方法 ,注意类必须已经存在
  • 构造方法引用类::new 基本数据类型[]::new自动匹配构造器