java基础第七篇之接口

haizai haizai     2022-12-17     165

关键词:

1.什么是接口:

 * 接口是方法的集合,而且接口中的方法全是抽象的

 * 你可以把接口看成一个特殊的"抽象类",接口中的方法全是抽象的

 *

 *

 * 2.java中怎么定义接口:

 * 定义类的关键字:class

 * 定义接口的关键字:interface

 * 格式:

 * public interface 接口名

 * //成员方法

 * public abstract void demo01();

 * public abstract void demo02();

 *

 * 接口的方法 必须是public abstract 修饰,你可以不写,也可以选择性写,但是不写不代表没有(我们建议写)

 *

 * 3. 接口可以创建对象吗?不可以创建对象,接口也是天生作为父类

 *

 * 4.类和接口的关系,叫做实现,类实现接口(继承是类和类之间的关系,实现是类和接口的关系)

 *

 * 5.怎么实现: implements(实现的关键字)  extends(继承的关键字)

 *  a.一个类实现接口,这个类我们称为接口的实现类

 *   b.一个类继承抽象类,这个类我们称为抽象类的子类

 * 6.接口中成员的特点:

 *  a.所有的方法必须都是 public abstract修饰

 *

 *   b.接口中成员变量必须由public static final 修饰

 * 我们建议以上所有的修饰符都写上

 

 接口中成员的特点:

 * 1.所有的方法必须都是 public abstract修饰

 *

 * 2.接口中成员变量必须由public static final 修饰

 * 我们建议以上所有的修饰符都写上

 

 

 * 接口的一些特点:

 *

 * 1.类和类只能单继承,类和接口可以多实现

 *

 * 2.接口和接口的关系叫做继承,而且接口和接口可以多继承

 *

 * 面试题:java中支持多继承吗?

 * java类和类只能单继承,但是可以多层继承

 * java接口和接口可以多继承

 *

 * 3.一个类 继承了另外一个类,同时实现了多个接口

 * 伪代码:

 * public class 子类 extends 父类 implements 接口1,接口2...

 * //子类想要创建对象

 * //1.重写父类的抽象方法(可能有可能没有)

 * //2.重写所有接口中所有抽象方法

 *

 

  抽象类和接口的区别:

 *

 * 1.抽象类中只能定义 所有子类共性内容

 *

 * 2.接口中定义是整个继承体系之外的方法

 

 多态:[多种变态] 一个事物的多种形态

 * 比如一个学生,你可以看成是学生,你可以看成是人

 *

 * 1.必须有继承关系(或者实现关系)

 * 2.必须有方法的重写(但是不重写 多态失去了意义)

 * 3.在12前提下,多态的表现形式  父类的引用变量 指向了 子类的对象

 *   接口的引用变量 指向了 实现类的对象

 * AbstractB  aa = new ClassB();

 * InterA ia =  new ClassA();

 *

 * 假设  abstract  class Person

 * public abstract void sleep();

 *

 * 1.继承

 * class Student extends Person

 * //2.重写方法

 * public void sleep()

 * ..

 *

 *

 * 3.表现形式:

 *  父类的引用变量 指向了 子类的对象

 * Student s = new Student();//不是多态

 *  Person p = new Student();//就是多态

 

 多态中的成员变量:(只和父类有关系)

 * 1.编译时:看父类

 * 2.运行时:看父类

 *

 * 多态中的成员方法:

 * 1.编译时:看父类

 * 2.运行时:看子类

 *

 * 总结:多态的成员变量只和父类有关,多态的成员方法编译看父类运行时看子类

 *

 * 多态的好处和弊端:

 *

 * 1.弊端:只能调用子父类共有的方法,而不能调用子类特有的方法

 *

 * 2.好处:提高了程序的扩展性

 * 案例:说明多态好处,提高了程序的扩展性

 * 喂猫和狗的案例

 * 1.抽取父类 (Animal)

 * 2.猫狗继承Animal,同时重写抽象方法

 

 

 * 多态的形式:

 * 1.前提:

  酒 a = 剑南春

 

      酒 b = 五粮液

 

      酒 c = 酒鬼酒

 

      …

 

      这里所表现的的就是多态。剑南春、五粮液、酒鬼酒都是酒的子类,

  我们只是通过酒这一个父类就能够引用不同的子类,这就是多态——

  我们只有在运行的时候才会知道引用变量所指向的具体实例对象。

 * a.必须有继承关系(或者实现关系)

 * b.必须有方法的重写

 * 2.表现形式

 * 父类类型 变量名 = new 子类类型();

 * 接口类型 变量名 = new 实现类类型();

 *

 * 多态的弊端和好处:

 * a.只能调用子父类共有内容,不能调用子类特有的内容

 * 多态的成员变量:编译时看父类 运行时也看父类

 * 多态的成员方法:编译还是看父类,运行时看子类

 * b.好处:提供程序扩展性,同时提高了代码复用性

 *

 * 多态弊端的解决方案:(转型方案)

 * 1.向上转型:(自动类型转换)

 * double d = 1;//打印出来的d不是1而是1.0

 * Person p = new Student();//向上转型

 * Animal an = new Dog();//向上转型

 *

 * 2.向下转型(强制类型转换)

 * int i = (int)1.9;//打印i打印出来是1

 * Person p = new Student();//多态

 * Student s = (Student)p;//向下转型

昨天知识回顾:

 * 1.this和super的作用

 *

 * 2.方法重写的概念

 *

 * 3.方法重写的意义:增强了父类的功能

 *

 * 4.什么是抽象方法:

 *    什么是抽象类:

 *

 * 5.抽象类存在的意义?

 *

 * 6.抽象类的抽象方法存在的意义?

 *

 * 补充:this(参数):

 *  super(参数):单一原则

 *

 *

 */

public class TestDemo

public static void main(String[] args)

C c = new C();//1.开辟空间 2.构造方法 3.返回地址

//构造方法:1:super() 2:初始化成员(赋值默认值) 3:进行后面的方法体

 

class A

int x = 10;-

public A()

super();

//初始化成员

showX();

public void showX()

System.out.println(x);

class B extends A

public B()

super();

 

showX();

class C extends B

public C()

super();

//初始化

showX();

 

1.以前我们定义一个类的成员变量和成员方法的时候,以后我们是通过创建对象来调用这些成员的

 *

 * 2.定义一个类 CZStudent(学号,name,sex,school:就读学校)

 * static修饰成员变量:比如 : static String school

 * 被static修饰的成员变量 不属于某一个对象,它属于这个类,但是有学生又共享这个变量

 *

 * 案例: 中国人类

 * name.age,job,国籍

 *

 * 总结:被static修饰的成员变量,在内存中有一份,保存到静态区

 * 然后无论创建多少个对象,所有对象共享一份数据

 * 所以说我们一般称static修饰的成员变量 叫做类成员

 *

 * 3.被static修饰的成员的访问方式:

 * 成员变量:

 * 对象名.static修饰的成员变量名;//不建议

 * 类名.static修饰的成员变量名;//建议

 * 成员方法:

 * 对象名.static修饰的方法名();//不建议

 * 类名.static修饰的方法名();

 * 4.补充:被static修饰的成员 和 不被static修饰的成员相互访问的问题

 * 生命周期的问题:

 * static修饰成员出现的早----->秦始皇(先人)

 * 非static修饰的成员出现的晚---->我们(后人)

区块链100篇之第七篇--比特币的分叉

遵循相同机制的分叉我在第六篇讲到了一种情况就是在比特币网络中,在某一时刻有两个矿工同时算出随机数(即获得记账权),那么这个时候便会出现一种情况,即一条主链叉开变成两条叉链,每条链沿着各自的方向延伸下去... 查看详情

stm32cubemx第七篇之mcu屏(代码片段)

文章目录前言主程序配置模式A配置时序应用前言本文主要讲解自己实现MCU控制程序。本程序具有以下功能:能够输出汉字能够输出ASCII字符串能够输出整数本文使用的HAL库的版本为:STM32Cube_FW_F4_V1.25.0本文使用的STM32CubeMX... 查看详情

混合编程jni第七篇之jni的命令行们(代码片段)

        今天将继续JNI的学习,jni编程中常使用的一些命令行工具如何使用事半功倍,今天就快速的过一下,希望在接下来的使用中可以发挥效果    javahjavah是Java提供的生成jni头文件的... 查看详情

#java学习之路——基础阶段(第七篇)

...狂讲义(第四版)里面的内容。前言:此随笔主要是Java基础中的基础,相信大家对这方面肯定有着自己的理解和认识,具体详解可以参照万能的baidu,有的我就一笔带过,希望在我的学习之路上能够有大牛进行指导,也有更多的... 查看详情

博客目录

【第一篇】python学习——基础篇之基本数据类型(一)【第二篇】python学习——基础篇之基本数据类型(二)【第三篇】python学习——基础篇之文件操作【第四篇】python学习——基础篇之常用模块【第五篇】pyt... 查看详情

android基础第七篇

转载请标明出处:http://blog.csdn.net/gj782128729/article/details/52424876;本文出自:【高境的博客】1.清单文件AndroidManifest.xml1.1.清单文件的作用每个Android应用都需要一个名为AndroidManifest.xml的程序清单文件,这个清单文件名是固定的并且... 查看详情

mongodb基础教程系列--第七篇mongodb聚合管道

在讲解聚合管道(Aggregation Pipeline)之前,我们先介绍一下MongoDB的聚合功能,聚合操作主要用于对数据的批量处理,往往将记录按条件分组以后,然后再进行一系列操作,例如,求最大值、最小值、平均值,求和等操作。聚... 查看详情

linux从青铜到王者第十七篇:linux网络基础第二篇之udp协议

系列文章目录文章目录系列文章目录前言一、传输层1.再谈端口号2.端口号范围划分3.认识知名端口号(Well-KnowPortNumber)4.进程和端口号两个问题5.netstat查看网络状态二、UDP协议1.UDP协议端格式2.UDP的特点3.面向数据报4.UDP的缓冲区5.UDP... 查看详情

第七篇-列表式app:listactivity及listview

一、新建一个emptyactivity的项目。二、修改MainActivity.java:extendsAppCompactActivity改为extendsListActivity。注释掉setContentView(R.layout.activity_main);packagecom.example.aimee.listapp;importandroid.app.ListActivity;im 查看详情

构建之法——第七篇

...出我们真正关心的属性,实体之间的关系是什么,在这个基础上,用户的需求是什么,软件如何解决用户的需求。在“设计实现阶段”,我们要搞清楚,软件是怎么解决这些需求?在“测试”和“发布”阶段,我们要搞清楚,软... 查看详情

java基础第十篇之异常

1.1接口概念 类:具有相同属性和功能的事物集合 接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的”类”。 接口只描述所应该具备的方法,并没有具体实现,具体的实现由接口的实现类(相当于接口... 查看详情

小刘同学的第七篇博文

真是醉了,最近笔记本坏了没办法,只好给自己的平板装数据库,而且平板没有网线接口,只有用校园网下,500KB,很酸爽。。。上午上了一下午,然后又解了个压,解压解了半小时,平板的配置是真的低。。。又安装了一下午... 查看详情

html+css第七篇-表格

表格标签:table表格thead表格头tbody表格主体tfoot表格尾tr表格行th元素定义表头td元素定义表格单元表格样式重置table{border-collapse:collapse;}单元格间隙合并th,td{padding:0;}重置单元格默认填充colspan属性规定单元格可横跨的列数。<tdco... 查看详情

第七篇:面向对象高级

第七篇:面向对象高级   PYTHON-绑定方法反射内置函数PYTHON-组合封装多态property装饰器 查看详情

第七篇css选择器实现字段解析

CSS选择器的作用实际和xpath的一样,都是为了定位具体的元素   举例我要爬取下面这个页面的标题In[20]:title=response.css(".entry-headerh1")In[21]:titleOut[21]:[<Selectorxpath="descendant-or-self::*[@classandcontains(concat(‘‘,n 查看详情

wpf效果第一百九十七篇之path范围内拖拽

...果中分享了彩色马蹄图的效果;这不今天再次在马蹄图的基础上,实现只能在Path内的拖拽效果;闲话不多扯直接看效果:1、关于拖拽顶点实现色域范围选择,参考:https://www.codeproject.com/Tips/828310/The-simplest-WPF-diagram-designer-part2、通过Blend... 查看详情

用仿actionscript的语法来编写html5——第七篇,自定义按钮

第七篇,自定义按钮这次弄个简单点的,自定义按钮。其实,有了前面所定义的LSprite,LBitmap等类,定义按钮就很方便了。下面是添加按钮的代码,functiongameInit(event){backLayer=newLSprite();addChild(backLayer);btn01=newLButton(newLBitmap(newLBitmapDat... 查看详情

xamarin效果第十七篇之argis

...了一下在线、离线加载高德地图和添加Mark;今天在原来的基础上再去玩玩ARGIS;来看看最终效果:1、先通过NuGet引用:Install-Package Esri.ArcGISRuntime.ARToolkit.Forms -Version 100.13.02、在AndroidManifest.xml中配置:<applicationandroid:label="MapCont... 查看详情