zoukankan      html  css  js  c++  java
  • 接口&多态

    day04
    接口
    概念:
    1.接口就是一种公共的规范标准.
    2.用来做功能的拓展(类继承机会只有一次,除了继承还想得到资源可以通过实现接口)
    定义格式:
    public interface 接口名 {}
    成员组成部分:
    1.静态常量(默认自带修饰符 public static final)
    2.抽象方法(默认自带修饰符 public abstract ) 实现接口必须实现所有的抽象方法.
    jdk8的新特性
    在接口中添加了默认方法和静态方法.
    1.默认方法: public default void show(){} : 解决了接口升级的问题.子类可以不重写默认方法.就可以使用.
    2.静态方法:public static void show(){} : 可以使用接口名直接调用静态方法.(调用方便)
    jdk9的新特性
    在接口中添加了私有方法: private void method(){} :
    解决了接口内部代码优化的问题.共性代码可以写在私有方法内.
    类和接口的关系
    - 类与类的关系
    继承关系,只能单继承,但是可以多层继承

    - 类与接口的关系
    实现关系,可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口

    - 接口与接口的关系

    ​ 继承关系,可以单继承,也可以多继承
    多态
    概念:
    同一个事物在不同情况下会展示出不同的状态.
    具体体现: 父类引用执向子类对象.
    格式:
    父类类型 变量名 = new 子类类型();
    访问成员特点
    成员变量: 编译看左边,运行看左边
    成员方法:编译看左边,运行看右边.
    多态的优缺点:
    优点:扩展性提高了.
    缺点: 不能使用子类特有的方法.
    多态的转型问题:
    向上转型(多态)
    父类类型 变量名 = new 子类类型();
    向下转型(强制类型转换)
    子类型 对象名 = (子类型)父类引用;
    避免类型转换异常:
    //使用instanceof关键字去判断一个对象是否属于某个类型
    if(a instanceof Dog){
    Dog dog = (Dog) a;
    dog.watchHome();
    }
    内部类
    成员内部类
    位置:类中方法外
    创建对象: Outer.Inner oi = new Outer().new Inner();
    静态成员内部类创建对象: 外部类名.内部类名 对象名 = new 外部类名.内部类名();
    局部内部类
    位置:方法内部
    创建对象:只能在方法内直接创建对象.
    匿名内部类[掌握]
    位置:方法内部
    创建对象
    new 类名 ( ) { 重写方法 } / new 接口名 ( ) { 重写方法 }
    new Inter(){
    @Override
    public void method(){}
    }
    lambda
    思想:
    函数式编程思想概述

    在数学中,函数就是有输入量、输出量的一套计算方案,也就是“拿数据做操作”

    面向对象思想强调“必须通过对象的形式来做事情”

    函数式思想则尽量忽略面向对象的复杂语法:“强调做什么,而不是以什么形式去做”

    而我们要学习的Lambda表达式就是函数式思想的体现
    格式
    (形式参数) -> {代码块}

    - 形式参数:如果有多个参数,参数之间用逗号隔开;如果没有参数,留空即可
    - ->:由英文中画线和大于符号组成,固定写法。代表指向动作
    - 代码块:是我们具体要做的事情,也就是以前我们写的方法体内容
    使用前提:
    - 有一个接口
    - 接口中有且仅有一个抽象方法
    格式省略模式:
    省略的规则

    - 参数类型可以省略。但是有多个参数的情况下,不能只省略一个
    - 如果参数有且仅有一个,那么小括号可以省略
    - 如果代码块的语句只有一条,可以省略大括号和分号,和return关键字
    使用场景
    对匿名内部类进行优化.

  • 相关阅读:
    i春秋xss平台
    i春秋exec
    bugku 你必须让他停下
    bugku 域名解析
    bugku web3
    bugku 矛盾
    (转)ubuntu下怎么放wifi热点给andriod设备
    (转)如何在 ubuntu 下使用 iNode 客户端
    博客更新啦!!
    HDU 5351 MZL's Border (多校联合第5场1009)
  • 原文地址:https://www.cnblogs.com/xiaofeiji/p/13448624.html
Copyright © 2011-2022 走看看