【幻化万千戏红尘】千峰培训Day09-java基础学习:接口,抽象类,抽象方法,多态,instanceof

课程回顾:

访问修饰符

private--->default--->protected---->public

重写:子类中

1、访问修饰符不能比父类的更严格

2、静态/非静态、返回值类型、方法名、形式参数类型必须相同

递归:方法内部出现了自己调用自己

abstract:关键字 抽象的

1、修饰类:抽象类

2、修饰方法:抽象方法

final:关键字 最终的

1、类

不能被继承

2、变量

常量

3、方法

不能被重写

今日内容:

java原则之最佳匹配性原则

在调用重载方法时,会优先选择最适合的方法

abstract:关键字 抽象

1、抽象类:修饰类

如果遇到某类不能实例化,我们可以将其写成抽象类

如果某类包含了抽象方法,我们必须将该类写成抽象类

2、抽象方法:修饰方法

格式:[修饰符] abstract 返回值类型 方法名([形式参数列表]);

抽象方法只有方法的声明,没有方法的实现

abstract不能修饰静态方法

抽象方法也不能是private

练习:请写一个类Person,属性若干,有抽象方法study、eat

并且写若干子类

创建测试类,创建若干张子类对象调用方法

接口:是由常量和抽象方法组成的结构体

接口中的属性:默认拥有 public\static\final

接口中的方法:默认拥有public\abstract

interface:关键字 声明接口

接口的创建格式:

[修饰符] interface 接口名{

常量

抽象方法

}

接口不能实例化

java允许多实现,允许一个类实现多个接口

implements:关键字 实现

主要是应用在类中进行实现接口(也就拥有了接口中的方法)

接口可以继承(extends)多个接口,多个接口之间使用,隔开

类可以实现(implements)多个接口,多个接口之间使用,隔开

抽象类和接口的区别?

抽象类:

不能实例化

只能单继承

可以有普通方法、静态方法、构造方法、属性、静态属性

可以有抽象方法

接口:

不能实例化

可以多实现

还可以多继承(接口)

只能有常量和抽象方法

在开发中,我们优先选择接口

抽象类和接口能否作为数据类型使用?

多态:多种形态

多态的分类:

1、静态化(编译时)多态

重载

2、动态化(运行时)多态

重写

对象转型

1、向上转型:子类对象可以充当父类对象,自动转换的过程

父类 对象名=new 子类([实际参数列表]);

2、向下转型:父类对象可以充当子类对象(父类对象本来就是由子类对象充当的),强制转换的过程

子类 对象名=(子类) 父类对象名;

再向下转型之前,一般都使用instancof进行验证,能否转型成功

instanceof:关键字 验证左边的对象是否为右边的类型

格式:对象名 instanceof 类名;

返回值类型为boolean型

常常用来向下转型前的验证

想向下转型那么一定的先向上转型

接口回调:声明一个接口类型的变量,通过实现类对象完成变量的实例化,

最后使用接口变量调用接口中的方法,这一过程我们称为接口回调

Object类中的equals方法:

public boolean equals(Object obj)

==和equals的区别?

大多数都是没有区别的,都是比较的栈内存的数据

只有String等类才是有区别

因为String类对equals方法进行重写,比较的是字符串的内容是否相同

包装类的equals也都重写了,比较的是内容

时间: 2024-11-13 08:19:25

【幻化万千戏红尘】千峰培训Day09-java基础学习:接口,抽象类,抽象方法,多态,instanceof的相关文章

【幻化万千戏红尘】第一周小项目

1.设计猜拳游戏:游戏说明: 类型:剪刀1.石头2.布3其中:剪刀----布----结果---赢石头----剪刀--结果---赢布------石头--结果---赢相同就是平局其他就是输 本系统采用人机对战电脑每局的结果就是通过随机数来完成玩家的结果是通过键盘输入对象的编号通过一定的方法来验证输赢的结果循环进行 退出的条件:1.自愿退出2.输的达到10次的时候 A:退出 B:重新开始 扩展:要求支持金额充值玩家可以指定每次的赌注 注意:随机数,可以使用Math.random():返回[0.0,1.

【幻化万千戏红尘】qianfeng-Android-Day08-基础学习:ListView

ListView 一.ListView介绍: (一). ListView 概念: ListView是Android中最重要的组件之一,几乎每个Android应用中都会使用ListView.它以垂直列表的方式列出所需的列表项. java.lang.Object ? android.view.View ? android.view.ViewGroup ? android.widget.AdapterView<T extends android.widget.Adapter> ? android.w

【幻化万千戏红尘】qianfengDay27-HttpURLConnection,OkHttpClient,,多线程下载且断点续传基础学习:

课程回顾: Servlet:java语言开发的运行在服务器上的开发步骤:1.创建Servlet类2.重写doGet或doPost方法3.运行在服务器 生命周期:1.初始化2.服务3.销毁 URL:统一资源定位符,网址openConnection 今日内容:Http协议:超文本传输协议常用方式:1.HttpURLConnection2.okHttp HttpURLConnection的使用步骤:1.创建URL对象---URL url=new URL("网址");2.获取连接对象--Htt

【幻化万千戏红尘】qianfengDay19-java基础学习:转换流、对象流、打印流、三大标准(重定向)

课程回顾: 流:数据通信的管道常用的流类:1.文件流:File:数据在文件中 1.FileInputStream 2.FileOutputStream 3.FileReader 4.FileWriter2.内存流:ByteArray:数据在内存中(数组) 1.ByteArrayInputStream 2.ByteArrayOutputStream3.缓冲流:Buffered:提高读写效率 1.BufferedInputStream 2.BufferedOutputStream 3.Buffere

【幻化万千戏红尘】qianfengDay10-java基础学习:成员内部类、静态内部类、局部和匿名内部类,设计模式之简单工厂模式

课程回顾: 接口:1.属性:public\static\final2.方法:public\abstract 多态:1.静态化(编译时)多态重载2.动态化(运行时)多态重写对象转型 1.向上转型 2.向下转型 今日内容:内部类:定义在类的内部的类1.成员内部类格式:[修饰符] class 类名 { }内部不能有静态的属性和方法,可以访问外部类的属性,也可以调用外部类的方法 在静态方法中的使用格式:外部类 外对象=new 外部类();成员内部类 对象名=外对象.new 成员内部类(); 2.静态内部

【幻化万千戏红尘】qianfeng-Android-Day07-AsyncTask基础学习:

异步任务AsyncTask及JSON解析 一.AsyncTask: (一).相关知识回顾: 1.开发Android应用时必须遵守单线程模型的原则: Android UI操作并不是线程安全的,并且这些操作必须在UI线程中执行. 2.单线程模型中始终要记住两条法则: 1). 不要阻塞UI线程 : 2). 确保只在UI线程中访问Android UI控件. 当一个程序第一次启动时,Android会同时启动一个对应的主线程(Main Thread), 主线程主要负责处理与UI相关的事件,如:用户的按键事件

【幻化万千戏红尘】qianfeng-Android-Day01-安卓历史及环境的搭建基础学习:

1.数据类型:   集合 2.io 3.多线程 1.方法有没有可能被多个线程调用 4.网络: 1.http协议 2.即时通讯协议 mqtt 3.webservice 5.数据解析 xml webservice json 字符集 unicode  utf-8 6.操作系统的进程和线程的关系 java里线程的入口函数是run函数线程是并行运行的 6.java面向对象=java代码复用 7.非计算机专业的看这几本书 计算机原理 2.linux操作系统原理 3.编译原理  4.软件工程 星月神话 lin

【幻化万千戏红尘】qianfengDay20-java基础学习:数据流、随机读取文件流RandomAccessFile

课程回顾: 流:转换流:字符和字节的转换对象流(Object):序列化,反序列化 打印流(Print):打印各种数据类型的数据 今日内容:数据流(Data):支持将基本数据类型写出,字节流,处理流1.DataOutputStream:数据输出字节流常用方法:writeXXX:写出基本数据类型的数据writeUTF:写出字符串2.DataInputStream:数据输入字节流常用方法:readXXX:读取基本数据类型的数据readUTF:读取字符串 随机读取文件类:拥有写出和读取基本数据类型的方法

【幻化万千戏红尘】qianfeng-Android-Day06-Intent七大属性基础学习:

Intent及其七大属性及intent-filter设置 一.知识点回顾:Activity (一).如何实现Activity页面跳转? 示例代码: //第一种方式: Intent intent = new Intent(MainActivity.this,NextActivity.class); startActivity(intent); //第二种方式: Intent intent = new Intent(); intent.setClass(MainActivity.this, Next