我的学习之路_第二章_接口/多态

author author     2022-09-03     345

关键词:

接口
(1)当抽象类中的方法都是抽象的时候,java就提供了一种新的表现形式:接口。接口是功能的集合 接口不能创建对象
(2)格式:
父接口:
public interface Inter
{

}

子类:
public class InterImpl implements Inter
{

}
(3)接口的特点:
A:不需要被abstract修饰。
B:类实现接口,可以单实现,还可以多实现。
C:接口可以继承接口,可以单继承,也可以多继承。
D:接口与父类的功能可以重复,均代表要具备某种功能。
(4)抽象类和接口的区别:
A:成员的区别
抽象类:
成员变量:可以是变量,也可以是常量。
构造方法:有构造方法,用于子类实例化使用。
成员方法:可以是抽象的,也可以是非抽象的。

接口:
成员变量:只能是常量。
默认修饰符:public static final
成员方法:只能是抽象的。
默认修饰符:public abstract

推荐:默认修饰符请自己永远手动给出。

B:类和接口的关系区别
类与类:
继承关系,只能单继承。可以多层继承。

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

接口与接口:
继承关系,可以单继承,也可以多继承。

C:体现的理念不同
抽象类里面定义的都是一个继承体系中的共性内容。

接口是功能的集合,是一个体系额外的功能,是暴露出来的规则。

多态
(1)同一个对象,在不同时刻表现出来的不同状态。
举例:水(水,冰,水蒸气)
猫(猫,动物)

(2)前提:
A:有继承或者实现关系。
B:有方法的重写。
C:有父类(接口)的引用指向子类对象。
(3)多态中的成员使用特点:
Fu fz = new Zi();
多态时,所有表现形式都是父类的表现形式,
只有调用方法时,运行的是子类重写的方法
A:成员变量
编译看左边,运行看左边。
B:成员方法
编译看左边,运行看右边。

class Fu {
int num=4;
void show() {
System.out.println("showFu");
}
}
class Zi extends Fu {
int num=5;
void show() {
System.out.println("showZi");
}
}
class T {
public static void main(String[] args) {
Fu f=new Zi();
System.out.println(f.num);
f.show();

}

(4)多态中的转型:
A:向上转型
把子类对象赋值给父类(接口)的引用 自动类型提升 int a = 0; double b =a;

Fu fz = new Zi();
B:向下转型
把父类(接口)的引用强制转换成子类对象
double b = 10.0;
int a = (int)b;

Fu fz = new Zi();
Zi zf = (Zi)fz;

注意:Fu fu = new Fu() 不能向下转型 会报ClassCastException 类型转换异常


(5)多态的好处及弊端:
A:好处
提高了程序可维护下和可扩展性。

B:弊端
不能使用子类特有内容。
要想使用,要么向下转型,要么重新创建子类对象。
(6)多态的三种形式:
A:具体的类多态 父类 变量名 = new 子类();
B:抽象类多态 父抽象类 变量名 = new 子类();
C:接口多态 接口 变量名 = new 实现类();
instanceof 关键字
格式: 对象名 instanceof 类名
返回值: true, false
作用: 判断指定的对象 是否为 给定类创建的对象

Animal a1 = new Cat();

Animal a2 = new Dog();

method(a1)


public static void method(Animal a){
if(a instanceof Cat){
向下转型
调用猫特有方法
}

}


我的学习之路_第二十二章_事务

JDBC事务【事务】作用:保证多条SQL语句,要么都执行成功,要么都执行失败.mysql数据库,执行SQL语句,自动开启事务,提交事务,回滚事务,把数据永久保存oracle数据库,执行SQL语句,手动开始会务,提交事务,回滚事务,把数据永久保存.Connectio... 查看详情

我的学习之路_第二十一章_jdbc连接池

JDBC连接池和DButils【DBCP连接池工具类】使用读取配置文件的方式DBCP中有一个工厂类BasicDataSourceFactory 工厂类中有一个静态方法 返回值为:DataSource createDataSource(Propertiesprop) 此方式返回的就是DataSource接口的实现类对象BasicDataSource ... 查看详情

我的学习之路_第三十二章_httpservletrequest

HttpServletRequest取得请求行的信息:返回值:StringgetMethod()请求方式返回值:StringgetRequestURI()请求目标返回值:StringgetProtocol()使用协议取得请求头的信息:返回值:StringgetHeader(Stringname)传一个请求头的key值,返回一个请... 查看详情

我的学习之路_第二十六章_javascript

Javascript【DOM操作】获取元素 varobj=document.getElementById("id值"); 获取值 obj.value; 设置值 obj.value=值; 获取标签体内容 obj.innerHtml; 设置标签体内容 obj.innerHtml=值; 使用正则表达式校验数据 1.编写正则表达式 1.用户名的正则:/^[a-z0-9_... 查看详情

我的学习之路_第二十七章_jquery

jQueryjs类库 把常用对象或者方法封装起来,让我们写代码效率更高 1.jQuery 2.extjs【jQuery入门】 jQuery的引入: 通过script标签的src属性引入 入门:获取jQuery对象 $(选择器)==jQuery(选择器) 获取值 jQuery.val(); jQuery对象和Dom对象的转换 Do... 查看详情

no2_1.接口继承多态_java学习笔记_接口

接口、继承与多态1.继承和多态是面向对象开发语言中的重要一个环节,使用得当,可以将整个程序的架构变得非常有弹性,减少代码冗余;2.继承:复用定义好的类;3.多态:可以动态调整对象的调用,降低对象的依存关系;4.... 查看详情

no2_3.接口继承多态_java学习笔记_多态

多态:1/**2*3*@author作者:sunshine4*@date创建时间:2016年7月4日下午5:22:195*/67classCalculate{8finalfloatPI=3.14f;9//求圆形的面积10publicfloatgetArea(floatr){11floatarea=PI*r*r;12returnarea;13}14//求矩形的面积15publicfloatgetAr 查看详情

我的学习之路_第十七章_javautils

【BeanUtils工具类】javaBaen:Java和数据库所对应关系实体类表(Utils)-->类(User)表中的列-->类中字段(属性)表中的行-->根据类创建的对象javaBean包含:1.私有的成员变量 2.公共的getter/setter方法 3.空参数构造方法 4.toSting方法 5.实现序... 查看详情

我的学习之路_第七章_list集合,set集合

【List集合】List集合存储数据的结构堆栈:先进后出(先存进来的元素,最后取出)例如:子弹压进弹夹队列:先进先出(先存进来的元素,先取出来)例如:排队『ArrayList』数组:查找元素快,增删元素慢有索引『LinkedList』链表:查找元素慢,增... 查看详情

no_16_0229java基础学习第九天

文档版本开发工具测试平台工程名字日期作者备注V1.02016.02.29lutianfeinonefinal关键字多态多态概述多态的分类:多态中的成员访问特点:多态中的转型问题抽象类抽象类概述抽象类特点抽象类的成员特点抽象类的几个小问题接口接... 查看详情

no2_2.接口继承多态_java学习笔记_继承

***类的继承***1.继承的实现extends2.[修饰符]class子类名extends父类名{}3.修饰符一般为:publicabstractfinal4.重写是指父子类之间的关系,子类的方法名与父类的方法名相,那么子类就不能继承父类的方法,称子类的方法重写了父类的方... 查看详情

java零基础小白学习教程之day08_接口&多态(代码片段)

day08-JAVAOOP课程目标1.【理解】什么是接口2.【掌握】接口的定义格式3.【掌握】接口的使用4.【理解】接口的成员特点5.【理解】类和接口抽象类和接口之间的关系6.【掌握】单继承多实现7.【理解】接口之间的多继承8.【掌握】接... 查看详情

java零基础小白学习教程之day08_接口&多态(代码片段)

day08-JAVAOOP课程目标1.【理解】什么是接口2.【掌握】接口的定义格式3.【掌握】接口的使用4.【理解】接口的成员特点5.【理解】类和接口抽象类和接口之间的关系6.【掌握】单继承多实现7.【理解】接口之间的多继承8.【掌握】接... 查看详情

我的学习之路_第十四章_反射

类的反射【获取class文件对象的三种方式】:●使用Object类中的方法getClass() Class<?>getClass()返回此Object的运行时类.●使用类名.class属性 每一个数据类型,基本数据类型和引用数据类型,Java都会为其设置一个class属性 例如:Classclas... 查看详情

我的学习之路_第十一章_字符流

【字符流】IO流的分类★字节流操作的文件不是文本文件字节输入流:InputStream抽象类FileInputStream操作文件的字节输入流字节输出流:OutputStream抽象类FileOutputStream操作文件的字节输出流★字符流 操作的文件是文本文件 字符输入流:Re... 查看详情

我的学习之路_第四章_异常

一Object类equals方法:四则运算是不能操作引用类型的,而==可以操作引用类型,但是在任何时刻只要是用==比较引用类型,比较的永远都是地址值.返回类型Boolean比较两个对象是否相等,比较的是地址值Object的equals方法比较的是地址值,子... 查看详情

我的学习之路_第五章_data,正则

Date类(时间类)所属包:java.util.Date构造方法:publicDate()返回的是当前时间也就是1970-1-1到电脑目前的时间值,用毫秒来表示 publicDate(long毫秒值)返回指定毫秒值的时间方法: 返回值longgetTime()返回当前时间的毫秒值 没有返回值setTime(lon... 查看详情

我的学习之路_第十六章_xml

【XML】可扩展的标记语言作用:存放数据、配置文件【XML的语法】xml的文件扩展名必须为:xmlxml的内容必须满足以下要求:1.固定的文档声明 2.合格的元素和属性 3.正确的注释 4.符合要求的特殊字符编写规则●文档声明(<?xmlversion="1... 查看详情