包
包的作用:
1.避免类的重名问题
有了包以后,类的名称就比较长了,类的全名称就变成了:包.类名
回忆:
java.util.Scanner: Scanner类的全名称
java.lang.String: String类的全名称
2分类组织管理众多的类
java.io:和IO(输入输出)有关
java.util:和各种常用工具类有关
3用于访问权限控制
如果某个类或某个方法的权限修饰符省略,那么就仅限于本包使用
如何声明包
语法格式:
package 包名
这句话有要求:
1一个.java源文件只能有一句
2必须在源文件的代码首行
包名的命名规范:
1所有单词都小写,每个单词之间用.分割
2习惯上用公司的域名
例如:
com.mysql.xxx
com.alibaba.xxx
一级域名:
com:商业
org:非营利性组织
gov:政府
。。。
如何编译带包的类
了解:
javac -d . 源文件名.java
如何运行带包的类
了解:
java 包.类名
如何使用其他包的类
前提:被使用的类或成员的权限修饰符要允许跨包使用
方式:
1使用全名称:包.类名
2使用import语句 + 简名称
说明:
1 import语句是写在package语句与class声明之间的
2 导包语句可以有很多句,导不同包的类
3 java.lang 包中类可以不使用import语句,就直接使用简名称
例如:System,String,Math
4 可以同时导入一个包中的很多类
import 包.*;
5 如果出现了不同包,但是类名相同
例如:
java.util.Date
java.sql.Date
只能一个选择使用全名称,一个使用简名称,不能同时使用简名称
Eclipse
快捷键
快捷键:
*
- 通用的快捷键:
- Ctrl + A:全选
- Ctrl + C:复制
- Ctrl + X:剪切
- Ctrl + V:粘贴
- Ctrl + Z:撤销
- Ctrl + Y:反撤销
- Ctrl + S:保存
- eclipse的快捷键 :
- Alt + /:内容提示
- Ctrl +1:快速修复
- Ctrl + Shift + O:快速导包
- 快速复制选中行(块):
- Ctrl + Alt + ↓
- Ctrl + Alt + ↑
- 快速删除选中行或光标所在行
- Ctrl + D
- 快速格式化:
- Ctrl + Shift + F
- 快速的注释:
- 单行注释:Ctrl + / 再按一次取消
- 多行注释:Ctrl +Shift + / 取消注释:Ctrl + Shift + \
- 交换位置:
- Alt + ↑
- Alt + ↓
- 在光标的下一行,插入一行开始编辑:
- Shift + 回车
- 查看某个类的源代码文件:
- (1)选中类名,按Ctrl +单击
- (2)Ctrl +Shift + T:输入类名,打开
- 在打开的多个源文件中切换:
- Ctrl + PaUp 或 Ctrl + PgDown
- Alt + -> 或 Alt + <-
多行编辑:ctrl+alt+shift+a,然后选择行数
this
- 1、意思:当前对象
- (1)构造器
- 正在被创建的对象
- (2)方法
- 正在调用该方法的对象
- 2、 用法
- (1)this.属性
- 当局部变量与成员变量同名时,可以在成员变量的前面加this.
- (2)this.方法
- 没有非用不可的时候
- (3)this()或this(实参列表)
- this()表示调用本类的无参构造
- this(实参列表)表示调用本类的有参构造
- this()或this(实参列表)必须在构造器的首行
面向对象基本特征二:继承
继承:
- (1)延续
- (2)扩展
- 1、为什么要有继承?
- (1)当某个类,需要派生出很多子类别
- Person:
- 需要派生出Teacher,Student等等子类别
- 那么此时Person中的共有的部分,就不需要在子类别中再次去声明
- (2)当多个类,出现了共同的特征时,可以把共同的部分抽取到父类中
- 目的:
- 代码的复用和扩展
- 2、如何实现继承?
- 【修饰符】 class 子类 extends 父类{
- }
- 子类:subclass,也称为派生类
- 父类:superclass,也称为超类,基类
- 3、继承的特点:
- (1)子类继承了父类,
- 从事物的特征来说,子类会继承父类所有的特征(属性和方法)。
- 但是从代码操作角度来说,父类中私有的属性、方法在子类中是不能直接使用的
- (2)子类继承父类时,构造器是不能被继承的
- (3)子类继承父类时,在子类的构造器中一定要去调用父类的构造器
- 默认情况下,调用的是父类的无参构造;
- 如果父类没有无参构造,那么在子类的构造器的首行,必须手动调用父类的有参构造;
(4)Java只支持单继承,即一个Java类只能有一个直接父类
-
只能有一个亲生父亲
- (5)Java支持多层继承,即父类还可以有父类
-
代代相传
- (6)一个Java类可以同时有很多个子类,而且子类还可以有子类
-
一个父亲可以有多个孩子,子孙满堂
- (7)子类可以扩展父类没有的属性、方法
方法的重写:Override
- 当子类继承了父类的方法时,但是父类的方法体不适用于子类了,那么子类可以选择进行“重写overwrite”。
- 方法 = 方法签名/方法头 + 方法体
- 重写有要求:
- (1)方法名:必须和父类被重写的方法名“相同”
- (2)形参列表:必须和父类被重写的形参列表“相同”
- (3)返回值类型:
-
基本数据类型和void:要求与父类被重写的方法的返回值类型“相同”
- 引用数据类型:要求子类重写的方法的返回值类型 <= 父类被重写的方法的返回值类型
-
例如:
-
子类方法的返回值类型是Student,父类被重写方法的返回值类型是Student
-
子类方法的返回值类型是Student,父类被重写方法的返回值类型是Person
-
子类方法的返回值类型是Person,父类被重写方法的返回值类型是Student(错误的)
- (4)修饰符
- ①权限修饰符:子类重写的方法的权限修饰符的可见性范围 >= 父类被重写方法的权限修饰符的可见性范围
-
例如:
-
子类方法的权限修饰符是public,父类被重写方法的权限修饰符public
-
子类方法的权限修饰符是public,父类被重写方法的权限修饰符protected
- ②其他修饰符(后面讲)
super
- 从父类中取查找,引用父类的xx
- 要求:super只能方法在子类中可见的属性、方法、构造器
- 用法:
- 1、super.属性
- 当子类声明了和父类同名的属性时,可以使用super.属性来访问父类的属性
- 2、super.方法
- 当在子类中需要调用父类被重写的方法时,可以使用super.方法
- 3、super()或super(实参列表)
- super();调用父类的无参构造
- super(实参列表):调用父类的有参构造
- 注意:
- (1)super()或super(实参列表)必须在子类构造器的首行
- (2)如果子类的构造器中,没有写super(),它也存在
- 但是如果子类构造器中写super(实参列表),那么super()就不会存在的