1.包
1.1.1 包的三大作用
1) 区分相同名字的类
2) 当类很多时,可以很好的管理类[模块]
3) 控制访问范围
1.1.2 打包命令
- 打包基本语法
package com;
说明: package 关键字,表示打包.
com: 表示包名
- 打包的本质分析(原理)
实际上就是创建不同的文件夹来保存类文件。
2. 包的命名
- 命名规则:
只能包含数字、字母、下划线、小圆点.,但不能用数字开头,不能是关键字或保留字
demo.class.exec1 //错误
demo.12a //
- 命名规范:
一般是小写字母+小圆点一般是
com.公司名.项目名.业务模块名
比如:com.atguigu.oa.model; com.atguigu.oa.controller;
常用的包
一个包下,包含很多的类,java中常用的包有:
java.lang.* //lang包是基本包,默认引入,不需要再引入.
java.util.* //util 包,系统提供的工具包, 工具类,使用
java.net.* //网络包,网络开发
java.awt.* //是做java的界面开发,GUI
如何引入包
语法: import 包;
比如 import java.awt.*; // * 表示将该包的所有类和接口引入.
我们引入一个包的主要目的是要使用该包下的类
比如 import java.util.Scanner; 就只是引入一个类Scanner。
注意事项
1) package 的作用是声明当前类所在的包,需要放在class的最上面,一个类中最多只有一句package
2) import指令 位置放在class的上面,package的下面,可以有多句且没有顺序要求
3.访问修饰符
基本介绍
java提供四种访问控制修饰符号控制方法和变量(属性、字段)的访问权限(范围):
1) 公开级别:用public 修饰,对外公开
2) 受保护级别:用protected修饰,对子类和同一个包中的类公开
3) 默认级别:没有修饰符号,向同一个包的类公开.
4) 私有级别:用private修饰,只有类本身可以访问,不对外公开.
4.继承
继承可以解决代码复用,
继承的基本语法
class 子类 extends 父类{
}
1) 子类就会自动拥有父类定义的属性和方法
2) 父类又叫 超类,基类。
3) 子类又叫派生类
5.继承的注意事项和细节
1)子类继承了所有的属性和方法,只是私有的属性不能直接访问,需要通过公共的方法去访问
2) 子类没有继承父类的构造器,但必须调用父类的构造器, 完成父类的初始化
3) 当创建子类时,不管你使用子类的哪个构造方法,默认情况下总会去调用父类的无参构造函数,如果父类没有提供无参构造函数,则必须在子类的构造函数中用 super 去指定使用父类的哪个构造函数完成对父类的初始化工作,否则,编译不会通过
4) 如果希望指定去调用父类的某个非默认构造方法,则显示的调用一下
5) super在使用时,需要放在方法体的第一句位置
6) super() 和 this() 都只能放在构造方法句首,因此这两个函数不能共存在一个方法中
7) java所有类都是Object类的子类
8) 父类子类最多只能继承一个父类(指直接继承),即java中是单继承机制。
9)子类最多只能继承一个父类(指直接继承),即java中是单继承机制。
10)构造器的调用不限于直接父类!将一直往上追溯直到Object类
11) 不能滥用继承,子类和父类之间必须满足 is-a 的逻辑关系
6.继承的内存分配
7.super()
super代表父类的引用,用于访问父类的属性、方法、构造器
基本语法
1) 访问父类的属性 , 不能访问父类的private属性 [案例]
super.属性名;
2) 访问父类的方法,不能访问父类的private方法
super.方法名(参数列表);
3)访问父类的构造器(这点前面用过):
super(参数列表);只能放在构造器的第一句,而且只能出现一句!
super给编程带来的便利
1) 调用父类的构造器 (分工明确, 父类属性由父类初始化,子类的属性由子类初始化)
1) 当子类中有和父类中的成员(属性和方法)重名时,为了访问父类的成员,必须通过super。如果没有重名,使用super、this、直接访问是一样的效果! [举例]
2) super的访问不限于直接父类,如果爷爷类和本类中有同名的成员,也可以使用super去访问爷爷类的成员;如果多个基类中都有同名的成员,使用super访问遵循就近原则。A->B->C
8.super和this的比较关系