10面向对象5.docx
- 文档编号:28855484
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:32
- 大小:696.70KB
10面向对象5.docx
《10面向对象5.docx》由会员分享,可在线阅读,更多相关《10面向对象5.docx(32页珍藏版)》请在冰豆网上搜索。
10面向对象5
面向对象:
多态
今日任务
1、内部类
a)理解内部类的概念和代码体现
b)掌握内部类的分类和用法
c)重点掌握匿名内部类
2、包和Java的访问权限
a)理解包的概念、作用和命名
b)掌握包的声明方式,了解带包的类的编译和运行的方法;
c)掌握不同包中类的相互访问方式
d)重点掌握java的四种访问权限
3、AIP文档的使用
a)理解API和API文档的区别
b)掌握API文档的查询方式
4、Object类简介
a)理解Object类的作用
b)掌握equals方法和toString方法的作用,会重写这两个类;
1.接口和抽象类的区别
1.1.接口和抽象类的区别
1、从声明上:
i.抽象类是一个类,使用class声明;还需要使用关键字abstract修饰;
ii.接口不是一个类,使用interface声明;
2、从能够书写的成员上看:
i.抽象类是一个类,可以书写类中可以书写的成员,和抽象函数;
ii.接口只能书写成员变量和抽象函数,而且修饰符是固定的;
3、从有无构造函数上看:
i.抽象类必须有构造函数;
ii.接口没有构造函数
4、从作用上看:
i.抽象类是父类,用来描述所有子类的共性信息的,只是描述的有些功能是不具体的;
ii.接口是用来描述不属于继承体系的扩展功能的;还可以定义规则;
5、继承关系上:
i.抽象类和类之间是继承关系,只支持但继承和多重继承;
ii.接口和类之间是实现关系,一个实现类可以实现多个接口;
接口和接口之间是继承关系,可以多继承和多重继承;
1.2.接口和抽象类的使用练习
需求:
描述手机和电脑,都有开机、关机和可以玩游戏的功能;
代码:
//表示可以玩游戏的接口
interfacePlayGame
{
//表示具有玩游戏的功能
publicvoidpalyGame();
}
//表示电子产品
abstractclassElecPro
{
//所有的电子产品都可以开机关机,不同的电子产品开关机的实现不同
//所以要是抽象的
publicabstractvoidopen();
publicabstractvoidclose();
}
//描述手机
classPhoneextendsElecProimplementsPlayGame
{
publicvoidopen(){
System.out.println("手机开机");
}
publicvoidclose(){
System.out.println("手机关机");
}
publicvoidpalyGame(){
System.out.println("手机玩游戏");
}
}
//描述电脑
classComputerextendsElecProimplementsPlayGame
{
publicvoidopen(){
System.out.println("电脑开机");
}
publicvoidclose(){
System.out.println("电脑关机");
}
publicvoidpalyGame(){
System.out.println("电脑玩游戏");
}
}
2.适配器设计模式
2.1.适配器模式
adapter:
适配器;
电脑电源适配器;作用:
转换电压,将不符合使用要求的220伏特的市电转换成我们电脑可以使用的电压;
适配器:
将不符合使用要求的东西转换成符合我们使用要求的东西;
2.2.生活中的适配
生活中适配器:
各种变压器;转换头;
2.3.Java中的适配
Java中,根据适配的目标不同,可以将适配器分为三类:
对类的适配;对对象的适配;对接口的适配;
对接口的适配:
需求:
有一个接口,里面定义了5个抽象函数;而我们要写一个类实现这个接口,但是在我们的类中,只需要使用其中的一个方法;
使用接口的适配:
接口的适配,又叫做接口的实例化;
3.内部类
3.1.内部类介绍
3.1.1.内部类引入
一个事物里面,会有另外一个事物,而且二者是相互依赖的;
人,里面有心脏;
原来的做法:
问题:
人和心脏是相互独立的两个类,不能体现相互依赖的关系;
怎么解决?
这种做法,就是使用的内部类;
3.1.2.内部类的代码体现
一个类可以书写在另外一个类的里面,写在里面的那个类,就是内部类;
包含一个内部类的类,就叫做外部类;
小结:
根据内部类在外部类中的书写位置,可以将内部类分为两类:
成员内部类;局部内部类;
3.2.成员内部类
根据修饰符的不同,成员内部类又可以分为一般成员内部类、私有成员内部类和静态成员内部类;
3.2.1.一般成员内部类
1、内部类怎么使用外部类成员
内部类可以直接使用外部类的所有成员;
要创建一个一般成员内部类的对象,必须先有外部类的对象存在;
2、外部内怎么使用内部类成员
外部类要使用内部类成员,需要先创建内部类对象;然后通过内部类对象来使用;
在一般成员内部类中不能定义静态成员变量和成员函数;(除了常量变量)
结论:
在一般成员内部类中,能使用static修饰的成员,只能是final的基本数据类型和字符串类型的数据;
其他引用类型的变量(包括数组)也不行;
3、外部类以外的类怎么使用内部类成员
在外部类以外的类中需要先创建外部类的对象,然后根据这个对象创建内部类的对象,然后根据内部类的对象来访问内部类的属性和行为;
3.2.2.私有成员内部类
使用private关键字修饰的内部类就是私有成员内部类;
私有成员内部类,只能在他所属的外部类中使用;
3.2.3.静态成员内部类
被static关键字修饰的内部类,就是静态成员内部类;
静态的成员内部类,和外部类的对象无关了;
所以静态成员内部类,又被叫做嵌套类;
静态成员内部类,不能直接使用外部类的非静态成员;
要使用外部类的非静态成员,需要先创建外部类的对象,通过外部类的对象来调用;
外部类的静态成员,可以在静态成员内部类中直接使用;
要创建静态内部类的对象,不需要先创建外部类的对象;
结论:
在外部类以外使用静态成员内部类,和使用一般类一样,仅仅是在类的名字前要加上外部类的类名;
结论:
在外部类中使用静态成员内部类,和使用一个普遍同类一样;
3.2.4.静态成员内部类的一个应用
使用静态成员内部类实现单例设计模式:
3.3.局部内部类
局部内部类,是写在函数中的类,可以直接使用外部类的静态成员,和通过外部类的对象使用外部类的非静态成员;
局部内部类,只能在定义它的函数中使用;
别的地方要使用它,只能通过调用这个函数来使用;
要使用所在函数的局部变量,需要将局部变量声明为final的;
(在JDK8中,不需要人为定义成final了,编译器会做相应的优化)
3.4.匿名内部类
3.4.1.匿名内部类
内部类也是一个类,可以实现接口和继承其他类;
结论:
当内部类实现一个接口或者继承一个类时,如果只需要被使用一次,就可以使用匿名内部类,简化书写;
3.4.2.匿名内部类的面试题分析
4.包
4.1.包的引入
所有书写的java源文件和编译好的class文件都放在同一个文件夹下,当项目复杂时,文件会非常多,就不便于管理;
而且,在同一个文件夹里,不能出现相同名称的文件;
思考:
在平时,为了方便管理过多的文件,需要创建很多文件夹,根据自己的使用习惯,将不同的文件放到不同的文件夹中;
在java中,也可以这么做;文件夹,在Java中,叫做包;
通过创建不同的包,就可以实现class文件的管理;
4.2.包的创建
4.2.1.包的声明方法
java的包,是直接声明在java源文件中的,在文件的最开始;
使用关键字:
package声明;
声明格式是:
在关键字后面加上包名;
包名的写法:
也是一个标识符;所有字母都是小写;
一般会创建多层包,多层包名之间使用.分开;
例如:
单层包名:
packagedemo;
多层包名:
packagedemo.test1;
包名有一个命名习惯:
多层包名,前面部分,是公司域名倒置;
传智播客:
;
域名倒置:
cn.itcast.
倒置的域名后面,一般跟的是项目名,再后面跟的是项目中的模块名;
4.2.2.带包声明的类的编译和运行
结论:
带包声明的java文件的编译,需要指定生成的包放置的位置;运行时,需要加上包名;
4.3.不同包中类的访问方式
结论:
1、要访问其他包中的类和类中的方法,这个类和这个被访问的方法,都要是public的;
2、要访问其他包中的类,要在类名前面加上包名;
如果在类中多次使用其他包中的类,使用包名加类名的方法,很麻烦,有一个简单的办法:
导包;
如果需要在一个包中导入多个类,一个一个类导入也很麻烦,简单的办法是:
直接在包名后面不写类名,使用*代替:
这样做可以导入com.demo2包中的所有类;(如果这个包里面还有子包,不能导入);
总结:
要使用其他包中的类,可以有两种方式的导入:
1、在用到其他类时,写全名(包名加类名);
弊端是:
如果多次使用这个类,没用一次就要写一次,很麻烦;
2、在类前面,包声明后面,使用import关键字导入该类;
4.4.java访问权限
Java中的访问权限,总共四种,使用三个关键字修饰:
从小到大排列:
私有的(private):
被修饰的成员,只能在本类中使用;
默认的(没有修饰符,就是默认的):
只能在本类和同一个包中的不同类之间访问;
受保护的:
(protected)和默认的相比,在不同的包中的子类可以访问父类中的受保护的内容;
公共的(public):
被修饰的成员,所有地方都可以访问;
java访问权限表:
(yes:
可以访问;no:
不可访问)
private(私有的)
默认的(什么都不写)
protected(受保护的)
public(公共的)
同一个类中
yes
yes
yes
yes
同一个包中不同类之间
no
yes
yes
yes
不同包中有继承关系的类
no
no
yes
yes
不同包中没有继承关系的类
no
no
no
yes
总结:
私有的,是访问权限最小的,只能在本类中使用;
公共的,访问权限最大,所有地方都可以使用;
protected:
受保护的,主要就是给子类使用的;
默认的,只能在同一个包中使用
5.API文档查询
开发中,更多的情况使用别人已经写好的东西;
5.1.API的概念
API(Applicationprogramminginterface):
应用程序接口;
别人写好的供大家使用的程序,就是API;而这个帮助我们理解和使用API的文档就叫做API帮助文档;
5.2.API文档的查询
5.2.1.按包查询
如果事先知道要找的类在那个包下面,就可以使用按包查找的方法:
5.2.2.按索引查询
如果事先已经知道要使用的类的类名,就可以使用按索引查找的方法:
如果要使用某个功能,但是不知道这个功能在那个类里面,可以去网上搜索;
5.3.类所在的包
5.4.类的继承关系
5.5.当前类实现的接口
5.6.类或者接口的定义格式
5.7.类或者接口的功能描述
5.8.类的构造方法
如果有的类,所有构造函数都是私有的,就不会出现构造方法摘要;
5.9.类的方法摘要
点击方法摘要,可以进入方法使用详情:
5.10.字段摘要
System:
字段就是成员变量;
6.Object类简介
6.1.Object类简介
6.2.equals方法
6.3.toString方法
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 10 面向 对象