Java Day 10
接口应用
多态
猫 x = new 猫();
动物 x = new 猫();
父类或接口的引用指向其子类的对象
class BookPC{
public static void main(String[] args){
useUSB(new UPan());
}
public static void useUSB(USB u){
u.open();
u.close();
}
}
class Mouse{
}
interface USB{
public void open();
public void close();
}
class UPan implements USB{
public void open(){
System.out.println("UPan open");
}
public void close(){
System.out.println("UPan close");
}
}
好处 提高代码复用性
弊端
前期定义的内容不能使用后期子类特有的内容
多态的前提:
1、必须有关系,继承、实现
2、要有覆盖
多态--转型
动物 x = new 猫();//自动类型提升,特有的功能无法访问;向上转型
猫 c = (猫)x;//向下转型
多态--类型判断 instanceof
用于向下转型前的判断
多态--成员特点 编译看等号左边
1、成员变量
父类有就获取,无则编译失败
2、成员函数
子类有就覆盖,无则获取父类的
3、静态函数
静态不存在覆盖,也就不涉及多态;对象才有多态,静态方法属于类
内部类--应用于设计
1、内部类可以直接访问外部类中的成员 包括私有的
2、外部类访问内部类,则需要建立内部类对象
编译后,查看class文件
内部类--修饰符
Outer.Inner in = new Outer().new Inner();
Static Outer.Inner in = new Outer.Inner();
当内部类成员有static修饰,则内部类也要加static
细节
Outer.this.num
为什么内部类能直接访问外部类中的成员呢?
因为内部类持有外部类的引用 外部类名.this
局部内部类--方法中
内部类访问局部变量,局部变量需要被声明为final
匿名内部类
内部类必须继承或实现一个外部类或接口
其实就是一个匿名子类对象
new 父类 or 接口 (){ 子类内容 }
应用
当函数参数是接口类型时,且接口中的方法不超过3个,可以用匿名内部类作为实际参数进行传递。
细节
主函数直接new Inner//为什么
匿名内部类如果使用父类进行显示赋予引用变量,那么再用变量去调用子类方法则编译失败。
带继承的子类对象初始化
1、成员变量默认初始化
2、调用子类构造器
3、调用父类构造器
4、成员变量显示初始化
5、构造代码块初始化
6、构造函数具体初始化
Java Day 10的更多相关文章
- JAXB在Java 9/10并且使用Tomcat 9的问题
Implementation of JAXB-API has not been found on module path or classpath. JAXB API是java EE 的API,jav ...
- Eclipse调试Java的10个技巧【转】
clipse调试Java的10个技巧 先提三点 不要使用System.out.println作为调试工具 启用所有组件的详细的日志记录级别 使用一个日志分析器来阅读日志 1.条件断点 想象一下我们平时 ...
- Java复习10.Servlet编程
Java复习10. Servlet编程知识 20131008 前言: 之前在大三下的时候,学习了一个月的JSP和Servlet知识,但是没有什么项目经验,把JSP Web开发学习实录看了前面几张,后面 ...
- 几周内搞定Java的10个方法
不要将Java与JavaScript弄混了,Java的目标是“一次编译,到处调试”(呃,不对,是“到处运行”).简单来说,就是Java程序可以直接在任何设备上运行. Java语言是什么? 不管我们是否 ...
- Java习题10.24
Java习题10.24 1. 1,3.connect()与accept():这两个系统调用用于完成一个完整相关的建立,其中connect()用于建立连接.accept()用于使服务器等待来自某客户进程 ...
- Java习题10.25
Java习题10.25 1. 实际上这道题考查的是两同两小一大原则: 方法名相同,参数类型相同 子类返回类型小于等于父类方法返回类型, 子类抛出异常小于等于父类方法抛出异常, 子类访问权限大于等于父类 ...
- 030 01 Android 零基础入门 01 Java基础语法 03 Java运算符 10 条件运算符
030 01 Android 零基础入门 01 Java基础语法 03 Java运算符 10 条件运算符 本文知识点:Java中的条件运算符 条件运算符是Java当中唯一一个三目运算符 什么是三目运算 ...
- Java SE 10 新增特性
Java SE 10 新增特性 作者:Grey 原文地址:Java SE 10 新增特性 源码 源仓库: Github:java_new_features 镜像仓库: GitCode:java_new ...
- Java SE 10 Application Class-Data Sharing 示例
Java SE 10 Application Class-Data Sharing 示例 作者:Grey 原文地址:Java SE 10 Application Class-Data Sharing ...
- java 14 -10 Calendar类以及练习
Calendar:它为特定瞬间与一组诸如 YEAR.MONTH.DAY_OF_MONTH.HOUR 等 日历字段之间的转换提供了一些方法, 并为操作日历字段(例如获得下星期的日期)提供了一些方法. 1 ...
随机推荐
- MYSQL--事务处理
1.用begin,rollback,commit来实现 begin 开始一个事务 rollback 事务回滚 commit 事务确认 2.直接用set来改变mysql的自动提交模式 MYSQL默认是 ...
- Groovy安装与入门实例
摘自: http://blog.csdn.net/dc_726/article/details/8576205 1 Groovy是什么? 来看下官网的介绍:http://groovy.codehaus ...
- Bypass pattern lock on Sony Xperia Z2 and backup all data
Yesterday she came to me with a Sony Xperia Z2 D6503. Guess what? She forgot the pattern so she coul ...
- 电脑U盘启动总结
1:联想G410(笔记本) FN+F2:进入BIOS,FN+F12,快速启动选择. boot mode—>Legacy support,boot priority—>Legacy firs ...
- Android IOS WebRTC 音视频开发总结(四八)-- 从商业和技术的角度看视频行业的机会
本文主要从不同角度介绍视频行业的机会,文章来自博客园RTC.Blacker,支持原创,转载必须说明出处,欢迎关注个人微信公众号blacker ----------------------------- ...
- jquery resize事件增强版
/* * jQuery resize event - v1.1 - 3/14/2010 * http://benalman.com/projects/jquery-resize-plugin/ * * ...
- ASP.NET内置对象二
(1)Respose对象 利用Response对象输出文字信息: protected void Page_Load(object sender, EventArgs e){ string messag ...
- js设计模式(12)---职责链模式
0.前言 老实讲,看设计模式真得很痛苦,一则阅读过的代码太少:二则从来或者从没意识到使用过这些东西.所以我采用了看书(<js设计模式>)和阅读博客(大叔.alloyteam.聂微东)相结合 ...
- HTML 5 Canvas
HTML 5 Canvas HTML5 的 canvas 元素使用 JavaScript 在网页上绘制图像. <canvas id="myCanvas" width=&q ...
- Dev的DocumentManager添加窗体
1.DocumentManager要设置自己的MdiParent属性 2.主窗体设置IsMidContainer为True 3.要生成的窗体设置MdiParent为主窗体 4.正常创建窗体,然后就可以 ...