java-day09
接口
就是一种公共规范标准,只要符合规范标准,就可以大家通用,多个类的公告规范,引用数据类型
格式
public interface 接口名称{}
接口都能定义抽象方法
public abstract 返回值类型 方法名称();
修饰符必须是public abstract,但可以省略不写
使用
接口不能直接使用,必须有一个实现类来实现该接口
public interface 接口名称{}
public 实现类名 implements 接口名称{}
实现类必须覆盖重写接口所有的抽象方法
默认方法
public default 返回值类型 方法名称(参数列表){} 用于解决接口升级问题,会被实现类继承
静态方法
public static 返回值类型 方法名称(参数列表){} 不能通过实现类对象调用,通过接口名称直接调用静态方法 接口名称.静态方法()
私有方法
抽取一个公共方法,用来解决默认方法间重复代码,但不应该被实现类使用
普通私有方法
private 返回值类型 方法名称(参数列表){}
静态私有方法
private static 返回值类型 方法名称(参数列表){}
接口中可以定义成员变量,但必须使用public static final修饰,可省略不写
接口中的成员变量必须被赋值,应为成员变量有默认值,而它又是被final修饰。
使用
接口名称.成员变量名
建议命名全大写,且用下划线分割
注意事项
接口没有静态代码块,或者构造方法
一个类直接父类只有一个,但一个类可以有多个接口
如果多接口中有重复命名的抽象方法,在实现类中只需要覆盖重写一次即可
如果有重复的默认方法,实现类要对冲突的默认方法覆盖重写
父类与接口的默认方法命名发生冲突,优先使用父类的
接口的继承是多继承的
总结 多个父接口中抽象方法重复,没关系,但默认方法需要覆盖重写。
多态
一个对象拥有多种形态,父类引用指向之类对象
父类名 对象名 = new 子类名(); 接口名 对象名 = new 实现类名();
直接访问成员变量
看等号前是谁,就用谁,没有则向上找
间接访问成员变量
看方法属于谁,就有谁,没有则向上找
成员方法访问
看new的是谁,优先用谁,没有则向上找
对象的向上转型
右侧创建一个子类对象,把它当作父类来看待使用,类似与自动类型转换
如果向上转型,则无法调用子类特用的方法,所以就需要向下转型
对象的向下转型,其实是一个还原的动作,将父类对象还原成本来的子类对象,且只能还原成本来的子类对象
格式
子类名称 对象名 = (子类名称)父类对象;
在向下转型前需要使用instanceof关键字来判断
对象 instanceof 类名称
返回一个boolean值,判断前面的对象能不能当作后面类型的类型
final关键字
代表最终,不可改变
可以用来修饰一个类,一个方法,一个局部变量,一个成员变量
当修饰一个类时
当前类不能被继承,但可以有父类
一个类如果被final修饰,其中所有成员方法无法被覆盖重写
当修饰一个方法时
该方法不能被子类覆盖重写,所以abstract关键字与final关键字不能同时使用
一旦用final修饰局部变量,就不能进行修改,所以只能赋值一次
修饰成员变量时
变量也不可改变,由于成员变量有默认值,所以被final修饰的成员变量一点要被赋值,要么直接赋值,要么通过构造方法赋值
内部类格式
修饰符 class 类名{
修饰符 class 内部类名{}
}
内用外,可以随意访问;外用内,需要内部类对象
定在在一个类中
如何使用成员内部类
在外部类方法中,使用内部类,然后再main调用外部类方法
外部.内部 对象名 = new外部().new内部();
内部类访问外部类成员变量
如果重名的话,救用外部类名.this.成员变量名
局部内部类
定义在类的一个方法中
格式
修饰符 class 类名{
修饰符 返回值类型 方法名(){
class 类名{}
}
}
关于修饰符
外类:public/(default)
成员内部类:public/protected/(default)/private
局部内部类:什么都不i额
如果希望访问所在方法的局部变量,那么局部变量必须是有效final的
匿名内部类
如果接口的实现类(或是父类的子类)只需要使用唯一一次,那么可是省略该类的定义,而改用匿名内部类
接口名称 对象名 = new 接口名称(){
覆盖重写所有抽象方法
};
注意事项
在创建对象时,只能使用唯一一次
将class作为成员变量




interface作为成员变量




java-day09的更多相关文章
- java - day09 - summerize
猜字母游戏 package day08_summerize; import java.util.Scanner; import java.util.Random; //猜字母游戏 /** * @aut ...
- Spark案例分析
一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...
- java 多线程 day09 线程池
import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.c ...
- Java 学习 day09
01-面向对象(内部类访问规则) package myFirstCode; /* 内部类的访问规则: 1. 内部类可以直接访问外部类的成员,包括私有private. 之所以可以直接访问外部类中的成员, ...
- Java之路---Day09(继承)
2019-10-23-22:58:23 目录 1.继承 2.区分成员变量重名的方法 3.区分成员方法重名的方法 4.继承中重写与重载的区别 5.继承中覆盖重写的注意事项 6.继承中覆盖重写的设计原则 ...
- Java 复习整理day09
package com.it.demo01_thread; /* 案例: 多线程简介. 概述: 指的是进程有多条执行路径, 统称叫: 多线程. 进程: 指的是可执行程序, 文件(例如: .exe) 大 ...
- Java学习day09—-封装和继承
封装 1.封装 1.1 封装的概念和实现 封装: 属性私有:将属性使用private修饰,表示此属性只能在本类中访问,不让外部直接访问 方法公开:针对每一个属性编写一对公开的方法 get set 分别 ...
- java学习第二天多态.day09
接口 接口总结 接口表示一种规约(规范.标准),它里面定义了一些列抽象方法(功能),它可以被多个类实现. 1接口名称首写字母用I,表示一个接口,后命名使用驼峰命名 2.接口中定义的都是抽象方法,所以可 ...
- Java历程-初学篇 Day09 冒泡排序
冒泡排序 冒泡排序(Bubble Sort)是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是 ...
- [Java拾遗三]JavaWeb基础之Servlet
Servlet 1,servlet介绍 servlet是一项动态web资源开发技术. 运行在服务器端. 作用:处理业务逻辑,生成动态的内容,返回给浏览器 ...
随机推荐
- 从psd图中将图层导出成单独文件
- mongodb常用基本命令
一.数据库常用命令 1.help查看命令提示 help db.help() db.test.help() db.test.find().help() 2.创建.切换数据库 use movies 3.查 ...
- php上传(三)
关于一些上传插件的运用 JQuery上传插件Uploadify使用详解 http://www.cnblogs.com/oec2003/archive/2010/01/06/1640027.html
- JZOJ5146:港湾
Description 放假啦!小林和康娜来到了港口,看到有货船正在卸货.港口十分狭窄,只有两个卸货区可以使用.每个卸货区上面可以堆积任意多个箱子.每卸下来一个箱子,工作人员都会把这个箱子放在某个卸货 ...
- HAProxy服务器 、Keepalived热备 、Keepalived+LVS
配置HAProxy负载平衡集群 1.1 问题 准备三台Linux服务器,两台做Web服务器,一台安装HAProxy,实现如下功能: 客户端访问HAProxy,HAProxy分发请求到后端Real Se ...
- NX二次开发-UFUN创建倒圆UF_MODL_create_blend
NX9+VS2012 #include <uf.h> #include <uf_modl.h> UF_initialize(); //创建块 UF_FEATURE_SIGN S ...
- [DataContract]引用
项目->右键->添加引用->找到System.Runtime.Serialization 添加之
- GIT学习记录3(分支管理)
学习参考地址:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 本编随笔只是自己对 ...
- git学习记录2(远程库管理)
学习参考地址:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 本编随笔只是自己对 ...
- java-day12
数据结构 常用的数据存储结构:栈,队列,数组,列表,红黑树. 栈:先进后出(入口和出口在用一侧) 队列:先进先出 数组: 查询快:因为数组的地址是连续的,通过数组的首地址找到数组中的元素. 增/删慢: ...