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 ...
随机推荐
- c++ string 转GUID及反转
#include "stdafx.h" #include <string> #include <windows.h> using namespace std ...
- boost:thread使用实例
/************************************************************************/ /*功能描述: boost thread使用实例 ...
- fluentd正则表达式
一: 匹配上则取否则不取 匹配规则为 \[sv=(?<sv>[^\]]*?)\].*?\[os=(?<os>[^\]]*?)\].*?\[net=(?<net>[^ ...
- Velocity语法大全
1\ 参考地址:http://www.cnblogs.com/codingsilence/archive/2011/03/29/2146580.html
- RegisterStartupScript和RegisterClientScriptBlock的区别
1. //注册到 <form> 尾部 ,HTML元素已加载完毕 this.Page.ClientScript.RegisterStartupScript(this.GetType( ...
- Spring Richclient — 企业级富客户端开发框架介绍,第 1 部分
Spring Richclient — 企业级富客户端开发框架介绍,第 1 部分 http://www.ibm.com/developerworks/cn/java/j-lo-spring-richc ...
- 在HTML文件中加载js
js加载只分为两种: 1.全局js,放在<head>标签里面,整个页面很多都用到的,它是优先加载的. 2.局部js,放在</html>结束标签以内的任何位置,它是第二加载的.
- c# 实现串口编程-操作LED屏幕
串口编程主要用到SerialPort这个类,主要实现对串口发送字节数组然后点阵屏显示相关信息,其实这个功能很简单下面给大家把整体思路用流程图展现如下:. 其实整体思路就如流程图.下面是整个流程图的一个 ...
- 【转】MYISAM表批量压缩
关于对MYISAM表的压缩,可以使用myisampack和myisamchk完成(myisampack完之后必须进行myisamchk才能使用压缩后的表,而且是只读的), 其详细地用法可以参考官方文档 ...
- Fragment的创建以及与activity的参数传递
点击下面不同的TextView变化不同的Fragment avtivity与Fragment之间传递消息不能使用构造器传递,用bunder传递 首先写一个含有FrameLayout(这个布局最佳),里 ...