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 ...
随机推荐
- JPA 批量新增
1. 在实现类 增加 EntityManager 注入 private EntityManager em; @PersistenceContext(name = "EntityManager ...
- Velocity语法大全
1\ 参考地址:http://www.cnblogs.com/codingsilence/archive/2011/03/29/2146580.html
- 关于fork函数中的内存复制和共享
原来刚刚开始做linux下面的多进程编程的时候,对于下面这段代码感到很奇怪, #include<unistd.h> #include<stdio.h> #include< ...
- CSS3中颜色线性渐变实战
css3线性渐变可以设置3个参数值:方向.起始颜色.结束颜色.最简单的模式只需要定义起始颜色和结束颜色,起点.终点和方向默认自元素的顶部到底部.下面举例说明: CSS Code复制内容到剪贴板 .te ...
- Windows 2008 R2 X64 安装WebsitePanel(WSP虚拟主机管理面板)
Windows 2008 R2 X64 安装WebsitePanel(WSP2.0虚拟主机管理面板) 估计很多同学都还不知道WebsitePanel是什么东东吧,Web ...
- POI中设置Excel单元格格式样式(居中,字体,边框等)
创建sheet什么的就不多说了,直接进入正题 HSSFCellStyle cellStyle = wb.createCellStyle(); 一.设置背景色: cellStyle.setFillF ...
- Head First-策略模式
策略模式,什么是策略模式,定义了算法族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化独立于使用算法的客户. 下面我们就用鸭子来诠释一下策略模式,鸭子有两种行为呱呱叫和飞,但是并不是所有的鸭 ...
- java初探native
最近碰见一个java中一个native关键字,不知道是干什么的,如下: public native String FileName(String strURL); static{ ...
- 共享内存shared pool (4):Library cache 转储文件
上一篇blog只是从概念上理解Library cache,本篇则是将Library cache从内存中dump出来,看看其结构. 基本命令 ALTER SESSION SET EVENTS 'imme ...
- STL之容器基本操作
容器类 STL Container Header Applications vector <vector> 直接访问任意元素,快速插入.删除尾部元素 deque <deque> ...