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:显示器(按键暴露出来操作,但实际的东西/细节方法被隐藏起来 ...
随机推荐
- HOOK API(二) —— HOOK自己程序的 MessageBox
转载来源:https://www.cnblogs.com/hookjc/ 0x00 前言 以下将给出一个简单的例子,作为HOOK API的入门.这里是HOOK 自己程序的MessageBox,即将自己 ...
- Javascript 生成全局唯一标识符 (GUID,UUID)
全局唯一标识符(GUID,Globally Unique Identifier)也称作 UUID(Universally Unique IDentifier) . GUID是一种由算法生成的二进制长度 ...
- centos安装Libzip
2018年06月29日 11:12:15 oxiaobaio 阅读数 4827 wget https://nih.at/libzip/libzip-1.2.0.tar.gztar -zxvf li ...
- The official raywenderlich.com Objective-C style guide.
The official raywenderlich.com Objective-C style guide. This style guide outlines the coding convent ...
- 私有化轻量级持续集成部署方案--04-私有代码仓库服务-Gitea
提示:本系列笔记全部存在于 Github, 可以直接在 Github 查看全部笔记 企业级最流行的私有代码仓库是 Gitlab, 一开始我也打算部署 Gitlab作为私有代码仓库. 但部署完 d 成后 ...
- MyBatis中执行器Executor框架
与JDK提供的Executor框架类似,MyBatis也提供了一套Executor框架,具体如下图: 其为Mybatis提供与数据库交互的功能,是一个典型的装饰器模式的应用--对JDBC功能的封装,同 ...
- VUE项目二级菜单刷新时404 nginx
原因:vue项目的路径时虚拟路径,并不存在,所以用nginx去请求请求不到,所以vue项目做了两部调整: 1.所有的请求后端接口地址前端写死 2.nginx里把所有的接口转发后端删掉,并添加以下内容 ...
- awvas启动不起来解决方案
当双击桌面的"Acunetix图标",自动打开浏览器跳转页面,结果页面显示"无法访问此网站"按Windows+R键输入services.msc打开服务界面查看A ...
- word隐写
通过打开word选项中显示中的显示隐藏文字即可解决word隐写的问题
- [数分笔记]问题1.1 T1
题目:非负整数a,b使得为整数,求证这个整数必是某一整数的平方.(1988年第29届国际数学奥林匹克竞赛试题) 证明:设k=,k为非负整数 1°a=b k=2a²/(1+a²)=2-2/(1+a²) ...