接口应用
 
多态
 猫 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的更多相关文章

  1. 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 ...

  2. Eclipse调试Java的10个技巧【转】

    clipse调试Java的10个技巧 先提三点 不要使用System.out.println作为调试工具 启用所有组件的详细的日志记录级别 使用一个日志分析器来阅读日志 1.条件断点 想象一下我们平时 ...

  3. Java复习10.Servlet编程

    Java复习10. Servlet编程知识 20131008 前言: 之前在大三下的时候,学习了一个月的JSP和Servlet知识,但是没有什么项目经验,把JSP Web开发学习实录看了前面几张,后面 ...

  4. 几周内搞定Java的10个方法

    不要将Java与JavaScript弄混了,Java的目标是“一次编译,到处调试”(呃,不对,是“到处运行”).简单来说,就是Java程序可以直接在任何设备上运行. Java语言是什么? 不管我们是否 ...

  5. Java习题10.24

    Java习题10.24 1. 1,3.connect()与accept():这两个系统调用用于完成一个完整相关的建立,其中connect()用于建立连接.accept()用于使服务器等待来自某客户进程 ...

  6. Java习题10.25

    Java习题10.25 1. 实际上这道题考查的是两同两小一大原则: 方法名相同,参数类型相同 子类返回类型小于等于父类方法返回类型, 子类抛出异常小于等于父类方法抛出异常, 子类访问权限大于等于父类 ...

  7. 030 01 Android 零基础入门 01 Java基础语法 03 Java运算符 10 条件运算符

    030 01 Android 零基础入门 01 Java基础语法 03 Java运算符 10 条件运算符 本文知识点:Java中的条件运算符 条件运算符是Java当中唯一一个三目运算符 什么是三目运算 ...

  8. Java SE 10 新增特性

    Java SE 10 新增特性 作者:Grey 原文地址:Java SE 10 新增特性 源码 源仓库: Github:java_new_features 镜像仓库: GitCode:java_new ...

  9. Java SE 10 Application Class-Data Sharing 示例

    Java SE 10 Application Class-Data Sharing 示例 作者:Grey 原文地址:Java SE 10 Application Class-Data Sharing ...

  10. java 14 -10 Calendar类以及练习

    Calendar:它为特定瞬间与一组诸如 YEAR.MONTH.DAY_OF_MONTH.HOUR 等 日历字段之间的转换提供了一些方法, 并为操作日历字段(例如获得下星期的日期)提供了一些方法. 1 ...

随机推荐

  1. CSS常用的属性命名

    页头:header   如:#header{属性:属性值;}或.header{属性:属性值;},也许你需要了解class与id区别及用法 登录条:loginBar         标志:logo   ...

  2. PHP超时处理全面总结(转)

    [ 概述 ] 在PHP开发中工作里非常多使用到超时处理到超时的场合,我说几个场景: 1. 异步获取数据如果某个后端数据源获取不成功则跳过,不影响整个页面展现 2. 为了保证Web服务器不会因为当个页面 ...

  3. JSF的ui标签

    在使用自己的tag时,首先需要在web.xml里面进行注册,注册方式是在web.xml开头加上:  <context-param>        <param-name>fac ...

  4. C# 事务处理

    前言: 通常SqlHelper类为了方便处理,做成了静态类,静态类的问题是不方便添加事务处理. 实例化类方便添加事务处理,DoTrans/CommitTrans/RollBackTrans  三个函数 ...

  5. javaSE第二十二天

    第二十二天    312 1:登录注册IO版本案例(掌握)    312 2:数据操作流(操作基本类型数据的流)(理解)    313 (1)定义:    313 (2)流对象名称    313 (3 ...

  6. java实现身份证校验

    原文来自:java教程网 题目:身份证校验   身份证校验   如果让你设计个程序,用什么变量保存身份证号码呢?长整数可以吗?不可以!   因为有人的身份证最后一位是"X"   实 ...

  7. libharu 源码编译 VS2010

    最近项目中接过了一个libharu PDF 开源库的锅,哈哈.于是就自己编译了一套libharu 的MFC下的静态库和动态库. 编译libharu需要用到zlib库和libpng库,libpng库又依 ...

  8. Entity Framework中的多个库操作批量提交、事务处理

    在Entity Framework 中使用SaveChanges()是很频繁的,单次修改或删除数据后调用SaveChanges()返回影响记录数. 要使用批量修改或者批量删除数据,就需要SaveCha ...

  9. C-链表的一些基本操作【创建-删除-打印-插入】

    #include <stdio.h> #include <stdlib.h> #include <malloc.h> #define LEN sizeof(stru ...

  10. MVC MVVM Knockout viewmodel 提交 完整过程,包含序列化 JSON 和 字典模型绑定

    //JSON 通用操作------------------------------------------------------------------------------using Syste ...