Java学习笔记:03面向对象-接口_多态
1.类的概念
一堆具有共同的成员变量(属性)和成员方法(功能)对象的集合
2.接口的概念
接口是功能的集合,就是方法的集合
接口中只能定义方法,不能定义普通的成员变量
而且接口中的成员方法,必须是抽象
接口是比抽象类还抽象的一种类型
接口不能创建对象
通常叫"父接口"
3.接口的定义
定义类用关键字:class
定义抽象类用关键字:abstract class
定义接口关键字:interface
定义枚举用关键字:enum
格式:
public interface 接口名字{
/成员变量,不能定义普通的成员变量
//成员方法:必须都是抽象的
public abstract 返回值类型 方法名();
}
4.各类型之间的关系
类和类之间:继承,而且是单继承,一个子类,只能有一个直接父类
接口和接口之间:继承,但是可以多继承,一个子接口,可以有多个直接父接口
类和接口之间:不叫继承(extends),叫实现(implements)
只有类实现接口
实现implements和继承差不多,实现是把接口中的抽象方法都拿过来
面试题:java到底支不支持多继承?
如果是类与类,不支持多继承,只支持多层继承
如果是接口和接口,支持多继承,也支持多层继承
5.接口中成员的特点
5.1成员变量(可以定义),但必须有固定的修饰符public static final 数据类型 变量 = 值,固定修饰符可以不写,不写编译器自动添加
5.2成员方法,必须是固定工就是福public abstract 即抽象方法
5.3接口不可以创建对象(抽象类也是)
5.4实现类去实现类接口,它必须重写接口中所有的抽象方法,然后才能创建对象,否则这个实现类还是一个抽象类,是不能创建对象的
在开发中最常用的模式:
一个类继承一个抽象类,同时实现多个接口
public class A extends AbstractClasB implments 接口A,接口B{
//注意:
A中必须重写抽象类中的抽象方法,以及所有接口中的抽象方法
}
接口和抽象类的异同
1.相同点:
a.都不能创建对象
b.都是做为父类/父接口
c.子类/实现类/都必须重写抽象方法,然后才能创建对象
2.不同点:
a.抽象类用关键字abstract 接口用关键字interface
b.抽象类中可以有抽象方法,可以没有抽象方法,也可以有部分是抽象方法,部分不是抽象方法
接口中只要有方法,必须都是抽象的
c.抽象类型可以定义任意成员变量 接口的成员变量必须是public static final 修饰
d.类和抽象类之间的关系是单继承,类和接口之间关系是多实现
e.思想上的区别:
_1.抽象类中必须定义整个继承体系的共性内容
_2.接口类中定义整个体系之外的扩的功能
面向对象的三大特点:封装(安全性)/继承(扩展性)/多态(灵活性)
多态:
多态是对象的多态
_一个对象的多种状态
_比如:你在学校是学生,在家是儿女,在公司是员工
在java中的多态
前提:
_1.必须有字符关系(必须有继承)
_2.必须有方法的重写
多态在java中的表现形式:(两种格式)
_1.父类类型 变量名 = new 子类类型();
_2.接口类型 变量名 = new 实现类();
注意事项:
使用多态调用成员变量
_编译/运行都看左边的父类
使用多态调用成员方法
_编译时 看左边 父类
_运行是 看右边 子类
多态的弊端:
_多态只能调用子父类共有的方法
_不能调用子类特有的方法
弊端的解决方案:
_向下转型:多态,强制类型转换 int a = (int)3.14;
_向上转型:自动类型转换 double d = 10;
__Animal an = new Dog();
向下转型的弊端:
_把父类的变量转成子类类型的时候编译器直接编译通过
java中解决向下转型弊端的方法:
_一个关键字instanceof 运算符
_作用:判断某一个变量 不是 该类的类型
_格式:boolean b = an instanceof 类名
//使用instanceof运算符进行判断
boolean b =an instanceof Dog;
if(b){
Dog d = (Dog)an;
d.lookHome();
}
多态的好处:
提高了程序的灵活性
_父类类型的变量,可以接收任何一个子类的对象
_调用方法的时候,编译时看父类,运行时传递过来的子类对象中的方法
设计模式是什么(35种)
可以理解为规则,是共同制定用于解决问题的方案,总结的一个套路
1.代理设计模式
_1.1静态代理设计模式
_1.2动态
Java学习笔记:03面向对象-接口_多态的更多相关文章
- Java学习笔记——继承、接口、多态
浮点数的运算需要注意的问题: BigDecimal operand1 = new BigDecimal("1.0"); BigDecimal operand2 = new BigD ...
- Java学习笔记:04面向对象-内部类_访问修饰符_final
04面向对象-内部类/访问修饰符/final 1.static的介绍 static:关键字,静态的 static的作用是用来修饰类中的成员 2.访问一个类中的某一个成员变量 方法一: _1.创建对象 ...
- Java学习笔记(十)面向对象---接口
理解 初期理解 可以认为接口是一个特殊的抽象类.当接口中的方法都是抽象的,那么该类可以通过接口的形式来表示. class用于定义类 interface用于定义接口 格式特点 接口中常见定义:常量,抽象 ...
- Java学习笔记之---面向对象
Java学习笔记之---面向对象 (一)封装 (1)封装的优点 良好的封装能够减少耦合. 类内部的结构可以自由修改. 可以对成员变量进行更精确的控制. 隐藏信息,实现细节. (2)实现封装的步骤 1. ...
- Java学习笔记之---比较接口与抽象类
Java学习笔记之---比较接口与抽象类 抽象类是描述事物的本质,接口是描述事物的功能 接口与抽象类的异同 1.一个类只能继承一个父类,但是可以有多个接口 2.抽象类中的抽象方法没有方法体,但是可以有 ...
- Java学习笔记之面向对象、static关键字
一周Java学习总结 今天就总结理清一下关于面向对象和面向过程的程序设计的一些不同特点,以及讲下static关键字. 面向对象 现在接触的Java是面向对象的,现在的程序开发几乎都是以面向对象为基础的 ...
- Java 学习笔记(4)——面向对象
现在一般的语言都支持面向对象,而java更是将其做到很过分的地步,java是强制使用面向对象的写法,简单的写一个Hello Word都必须使用面向对象,这也是当初我很反感它的一点,当然现在也是很不喜欢 ...
- 《java JDK7 学习笔记》之接口与多态
1.对于"定义行为"也就是接口,可以使用interface关键字定义,接口中的方法不能操作,直接标示为abstract,而且一定是public修饰的. 类要操作接口,必须使用imp ...
- 疯狂java学习笔记之面向对象(五) - 封装、继承、多态
一.封装: 封装的概念: - 合理的隐藏:隐藏不想被外界操作的Field.方法.构造器 - 合理的暴露:一般就是希望给别人调用的方法 e.g:显示器(按键暴露出来操作,但实际的东西/细节方法被隐藏起来 ...
随机推荐
- httpclient方式提交数据到服务器
get方式: //使用HttpClient请求服务器将用户密码发送服务器验证 try{ String path = "http://192.168.13.83:8080/xuexi/serv ...
- Net6 DI源码分析Part4 CallSiteFactory ServiceCallSite
Net6 CallSiteFactory ServiceCallSite, CallSiteChain abstract class ServiceCallSite ServiceCallSite是个 ...
- 一站式超全JavaScript数组方法大全
一站式JavaScript数组方法大全(建议收藏) 方法一览表 详细操作 本人总结了JavaScript中有关数组的几乎所有方法(包含ES6之后新增的),并逐一用代码进行演示使用,希望可以帮助大家! ...
- Docker 中的问题:”invalid reference format: repository name must be lowercase”
在导入镜像的时候出现问题:invalid reference format: repository name must be lowercase 问题解决:镜像命名不能出现大写字母,将大写改为小写即可 ...
- CentOS虚拟机关闭防火墙
关闭防火墙 systemctl stop firewalld 关闭防火墙开机自启动 systemctl disable firewalld 关闭安全机制,将selinux设置为disabled vi ...
- netty系列之:JVM中的Reference count原来netty中也有
目录 简介 ByteBuf和ReferenceCounted ByteBuf的基本使用 ByteBuf的回收 ByteBuf的衍生方法 ChannelHandler中的引用计数 内存泄露 总结 简介 ...
- 带你十天轻松搞定 Go 微服务之大结局(分布式事务)
序言 我们通过一个系列文章跟大家详细展示一个 go-zero 微服务示例,整个系列分十篇文章,目录结构如下: 环境搭建 服务拆分 用户服务 产品服务 订单服务 支付服务 RPC 服务 Auth 验证 ...
- Spring 控制反转和依赖注入
控制反转的类型 控制反转(IOC)旨在提供一种更简单的机制,来设置组件的依赖项,并在整个生命周期管理这些依赖项.通常,控制反转可以分成两种子类型:依赖注入(DI)和依赖查找(DL),这些子类型各自又可 ...
- zabbix密码复杂度有效期安全增强,符合三级等保要求。
一.关于三级等保要求 1.zabbix默认没有设置密码复杂度功能,密码有效期功能. 2.zabbix具备失败处理功能,但是没有页面手动调试,需要修改源代码. 3.zabbix具备超时退出功能. 二.整 ...
- VS Code 在线运行:code-server部署(系列一)
偶然间发现VS Code可以在线运行,闲来无事部署了一套试试效果,先上图,是不是很熟悉的感觉,初步体验基本跟本地运行效果一样. 进入正题 首先要准备一套linux环境,环境配置最低是1G内存.2核CP ...