一、回顾:

权限修饰符: public -> protected -> (default) ->private
重写:
1.方法名和参数列表一致
2.子类中重写的方法, 返回值类型[小于等于]父类返回值类型
3.权限修饰符,[大于等于]父类方法的权限
final:
类: 类不能被继承
方法: 方法不能被重写
变量: 常量, 不能被修改, 必须初始化
常见的final类:
String Math
String不可变的: CharSequence - 字符序列 - 字符数组
底层实现: 字符数组 -> 字节数组 byte[] value
final value = 其他值
String str = “hello”;
str = “hi”;
接口:
1.公共的抽象方法
2.公共的静态常量 public static final
3.公共的默认方法
4.公共的静态方法[私有的]
5.私有的方法
使用接口:
实现类 implements 接口
实现所有的抽象方法, 默认方法[可以选择性重写]
创建实现类对象, 调用方法
类和接口叫做多实现, 要重写/覆盖[实现]所有的接口的所有抽象方法
和 重复的默认方法
类和类 叫做单继承, 父类中的方法和父接口中的默认方法重复了, 优先调用父类中的方法
Zi extends Fu implements InterfaceA

二、接口作为方法参数, 接口作为返回值:

 具体使用的都是接口的实现类对象,示例代码看文章末

三、多态

多态的前提:

class MyInterfaceAImpl extends Object implmenets MyInterfaceA
MyInterfaceA a = new MyInterfaceAImpl() -> 向上造型
Object o = new MyInterfaceAImpl() -> 向上造型
Fu fu = new Zi();
Animal a = new Cat();父类型引用 指向 子类型对象 -> 向上造型父类型 a = new 子类型对象();接口类型 a = new 实现类对象();

** 编译器 看 = 左边类型, 运行时JVM 看 = 右边类型**
左边类型决定了变量 能调用哪些方法,
右边类型决定了最终使用的方法是哪个 - 优先调用自己重写过的

口诀: 编译看左边, 运行看右边

提前得知, 引用 到底是什么类型的对象

Animal -> abstract void eat()
Cat -> void catchMouse() {}
Dog -> void watchHouse() {}
多态: Animal a1 = new Cat();Animal a2 = new Dog();
ClassCastException: 类型转换异常
解决方案: 转换之前先判断引用 实际上是不是要转换的类型对象引用a   ==instanceof==  子类型 => boolean问 a 实际上是不是子类型对象

四、内部类: 类中写个类

人体类  心脏类
车类    发动机类
种类: 成员内部类,静态内部类,局部内部类[匿名内部类]

成员内部类: 权限 public,protected,(default),private

语法:public class Outer{// ...public class Inner{//....}}
使用:内部类中, 可以随意使用外部类成员外部类中, 使用内部类成员时需要创建内部类对象无关类中, 使用内部类成员1.间接调用, 在外部类方法中调用内部类方法main方法中, 调用外部类方法2.直接调用, 需要创建内部类对象外部类.内部类 a = new 外部类().new 内部类();
内部类和外部类有同名成员变量外部类的成员变量: 外部类.this.变量内部类的成员变量: this.变量

局部内部类: 在方法内部定义类, 只在方法中有效

在局部内部类中, 使用局部变量, 必须是final的
JDK8 后, 局部变量事实上没有发生改变, 那么final可以省略
一次性的类, 只能用一次
不能使用权限修饰符局部内部类, 需要类只使用一次, 优化 -> 匿名内部类

匿名内部类: 继承抽象类或实现接口

语法: new 接口/抽象类() {int a;// 实现的所有抽象方法
}
匿名内部类, 只能用一次, new一个对象
匿名对象, 只能使用一次, 只能调用一次方法

** 注意: 匿名内部类 和 匿名对象 不是一回事 ! ! !**

静态内部类 对比 成员内部类 => 静态方法 和 成员方法

静态内部类:外部类.内部类 a = new 外部类. 内部类();
成员内部类 :外部类.内部类 a = new 外部类().new 内部类();

示例代码:点这.https://download.csdn.net/download/guangjian_/12639345

JAVA学习笔记第八天——接口作为方法参数和返回值、多态、内部类相关推荐

  1. 重学Java(035)——Java基础知识(类作为成员变量、接口作为成员变量、接口作为方法参数和返回值类型)

    学习内容:三种引用类型用法 一.类作为成员变量 二.接口作为成员变量 三.接口作为方法参数和返回值类型 实际的开发中,引用类型的使用非常重要,也是非常普遍的.我们可以在理解基本类型的使用方式基础上,进 ...

  2. 测试私有方法_Java基础之抽象类、接口作为方法参数和返回值

    不同修饰符使用细节 常用来修饰类.方法.变量的修饰符 public 权限修饰符,公共访问, 类,方法,成员变量 protected 权限修饰符,受保护访问, 方法,成员变量 默认什么也不写 也是一种权 ...

  3. Java基础二十二:函数式接口介绍,函数式接口作为方法参数、返回值,Supplier接口、Consumer接口、Predicate接口、Function接口基本介绍及其案例小练习

    函数式接口 1. 函数式接口概念及基本使用 1.函数式接口:有且仅有一个抽象方法的接口,函数式接口就是Lambda表达式使用的前提 2. Java中的函数式编程体现的就是Lambda表达式,所以函数式 ...

  4. Java学习笔记 第八天

    Java学习笔记 第八天 第一章 API 1.1 概述: 1.2 API文档的使用步骤:** 第二章 Scanner类 2.1 概述 2.2 引用类型使用步骤 2.3 Scanner类练习1---求和 ...

  5. Java12-day03【​​​​​​​(类名、抽象类名、接口名)作为形参和返回值、内部类、常用API(Math、System、toString()、Arrays)、冒泡】

    视频+资料(工程源码.笔记)[链接:https://pan.baidu.com/s/1MdFNUADVSFf-lVw3SJRvtg   提取码:zjxs] Java基础--学习笔记(零起点打开java ...

  6. C语言基础入门48篇_20_函数入门:为什么使用函数?(函数使得程序模块化 使用函数封装细节,使得程序员只要面向函数的接口编程(参数与返回值),而不用关心函数内部细节)

    菜鸟和高手都会基本,那菜鸟为什么是菜鸟,高手为什么是高手呢?很大的区别在于,高手写的程序[结构性]更好,更容易维护.而函数就是C语言结构化的一种手段. 函数可以将大的计算任务划分为多个较小的任务(解耦 ...

  7. NO.A.0011——day05——数组的-索引/内存/遍历/最大值获取/反转/作为方法参数和返回值...

    一.数组的概念 1.1.数组的概念:动态初始化: 代码库:Demo01Array.java package cn.itcast.day05.demo01;/* 数组的概念:是一种容器,可以同时存放多个 ...

  8. JAVA学习笔记 15 - 函数式接口、Lambda表达式和方法引用

    本文是Java基础课程的第十五课.主要介绍在JDK8中,Java引入的部分新特性,包括函数式接口.Lambda表达式和方法引用.这些新特性使得Java能够在按照面向对象思想进行开发的基础上,融合函数式 ...

  9. Java学习笔记_抽象/接口

    抽象方法:就是加上abstract关键字,然后去掉大括号,直接分号结束 抽象类:抽象方法所在的类,必须是抽象类.在class前面写上abstract 如何使用抽象类和抽象方法 不能直接创建new抽象类 ...

最新文章

  1. 正由另一进程使用,因此该进程无法访问此文件。
  2. 怎么成为优秀的软件模型设计者?
  3. java 数字三角形_数字三角形 Number Triangles(java的MLE解决办法)
  4. 使用wireshark分析TLSv2(详细)
  5. 手机游戏美术外包的四大优点及三大建议
  6. STL 容器迭代器失效总结
  7. python3导入_Python3导入相对还是绝对的正确方法?
  8. 非阻塞式JavaScript脚本介绍
  9. Bootstrap CSS 编码规范之不要使用 @import
  10. centos普通用户修改文件权限_centos6.5下修改文件夹权限和用户名用户组
  11. 计算机技术与人工智能基础赵学军答案,《人工智能技术及应用》习题及参考答案.docx...
  12. 08cms房产门户系统源码V8.6.1多城市版
  13. ❤️万字攻略,详解腾讯面试❤️
  14. python打印列表中指定元素的所有下标(5种方法)
  15. 【FL攻防综述】Privacy and Robustness in Federated Learning: Attacks and Defenses
  16. 关于QT出现“error: undefined reference to XXXX”问题
  17. iPhone内存溢出——黑白苹果
  18. 计算机考试word文档怎么画坐标,使用WORD画坐标系的方法
  19. C语言fwrite函数
  20. html链接找不到,在此服务器上找不到请求的URL/public_html/

热门文章

  1. 刚买下腾讯云轻量服务器,环境从头到尾安装总结
  2. C#,蛇梯问题(Snake and Ladder Problem)的算法与源代码
  3. 写了10篇产品分析后,我似乎知道怎么做一款短视频产品了……
  4. 计算机网络应用大专,计算机网络应用专业
  5. 400亿巨量资金恐慌出逃
  6. Java 通过EasyExcel导出的Excel文档的字体,背景色,自动列宽等符合要求
  7. 37岁计算机博士博士后,应该说,这是我见过“最掏心”的人才招聘了:招博士、博士后!...
  8. 综合编码——MPEG音频编码实验
  9. crontab java job_crontab定时任务安装和解析
  10. 动画:Flex布局 | 别再用传统方式进行网页布局了(上)