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 ...
随机推荐
- NSString常见用法总结
//====================NSStirng 的常见用法==================== -(void)testString { //创建格式化字符串:占位符(由一个%加一个字 ...
- CSS3 Filter
Filters主要是运用在图片上,以实现一些特效.(尽管他们也能运用于video上),不过我们在些只来讨论图片上的运用. 语法: elm { filter: none | <filter-fun ...
- 解读CSS布局之-水平垂直居
对一个元素水平垂直居中,在我们的工作中是会经常遇到的,也是CSS布局中很重要的一部分,本文就来讲讲CSS水平垂直居中的一些方法.由于我们大搜车的日常工作中已经不再需要理会低版本IE,所以本文所贴出的方 ...
- HTML 5缓存机制:Cache Manifest配置实例
Cache Manifest是HTML 5的一种缓存机制,文章作者直接用博客当测试环境,虽然[color=#444444 !important]应用起来非常简单,但效果却出奇的好.缓存后的速度,简直是 ...
- MyEclipse各种操作
MyEclipse console没有显示的解决方法 1.进window菜单 ->show view->console 2.还是window菜单->preferences-& ...
- Interpreter
#include <string> #include <iostream> #include <stack> using namespace std; stack& ...
- -webkit-filter属性用来干什么
这两天有看到国外网站纷纷介绍-webkit-filter,开始很迷惑,丫是想要学IE吗?今天看了下,和IE的滤镜没一毛关系啊,而且,效果很赞! 这些滤镜效果最初是用于SVG的,W3C引入到CSS中,然 ...
- js一些稀奇古怪的写法-带你装逼带你飞
//定时器的第三个参数 setInterval(function(str1,str2,num){ alert(str1+str2+num) },1000,'参数1','还可以有很多参数,不同的类型.. ...
- android 分段显示文本颜色控件
效果: 使用: <com.bei.myapplication.app.ProgressTextView xmlns:ptv="http://schemas.android.com/ap ...
- wordpress学习-themes-001
这一篇主要是来记录wordpress theme的内容.关于为什么要自己编写wordpress theme的理由,相信大家都有各自的体会.想让自己的博客变的更加突出?更加个性话?wordpress t ...