1 包
1.1 包的三大作用
1)区分相同名字的类
2)当类很多时,可以很好的管理类
3)控制访问范围
1.2 包的命名
命名规则:只能包含数字、字母、下划线、小圆点,但不能用数字开头,不能是关键字或保留字。
命名规范:
1)一般是小写字母+小圆点
2)一般是:com.公司名.项目名.业务模块名 如:com.hspedu.oa.controller
1.3 常用的包
1)java.lang.* //lang包是基本包,默认引用,不需要再引入
2)java.util.* //util包是系统提供的工具包
3)java.net.* //网络包,网络开发
4)java.awt.* //是做Java的界面开发,GUI
1.4 注意事项和使用细节
1、package的作用是声明当前类所在的包,需要放在类的最上面,一个类中最多只有一句package。
2、import指令位置放在package的下面,在类定义的前面,可以有多句且没有顺序的要求。
2 访问修饰符
2.1 基本介绍
Java提供四种访问修饰符,用于控制方法和属性(成员变量)和访问权限(范围)
1)公开级别:public,对外公开
2)受保护级别:protected,对子类和同一个包中的类公开。
3)默认级别:没有修饰符,向同一个包的类公开
4)私有级别:private,只有类本身可以访问,不对外公开
2.2 使用的注意事项
1)修饰符可以用来修饰类中的属性,成员方法以及类
2)只有默认和public才能修饰类,并遵循上述访问无权限规则
3)成员方法的访问规则和属性完全一样。
3 封装
3.1 基本介绍
封装就是把抽象出的数据(属性)和对数据的操作(方法)封装在一起,数据被保护在内部,程序的其他部分只能通过被授权的方法才能对数据进行操作。
3.2 实现步骤
1)将属性私有化 private
2)提供一个公共的(public) set方法,用于对属性判断并赋值
public void setXxx(类型 参数名){
属性 = 参数名;
}
例:
public void setName(String name){
this.name = name;
}
3)提供一个公共的(public) get方法,用于获取属性值
public 返回值类型 getXxx(){
return xx;
}
例:
public String getName(){
return name;
}
4 继承
4.1 基本介绍
4.2 基本语法
class 子类 extends 父类{
}
1)子类会自动拥有父类定义的属性和方法
2)父类又叫超类、基类
3)子类又叫派生类
4.3 继承的好处
1)代码的复用性提高
2)代码的扩展性和维护性提高
4.4 继承的深入讨论/细节
1)子类继承了父类所有的属性和方法,非私有的属性和方法可以在子类直接访问,但私有属性和方法不能在子类直接访问,要通过父类提供的公共方法去访问
2)子类必须调用父类的构造器
3)当创建子类对象时,不管使用子类的那个构造器,默认都会去调用父类的无参构造器,如果父类没有提供无参构造器,则必须在子类的构造器中用super去指定使用父类的那个构造器完成对父类的初始化,否则,编译不会通过。
4)如果希望调用父类的某个构造器,则显示的调用
5)super在使用时,必须放在构造器第一行(super只能在构造器中使用)
6)super() 和 this()都只能放在构造器第一行,因此这两个方法不能共存在一个构造器
7)Java所有类都是Object类的子类,Object是所有类的基类
8)父类的构造器的调用不限于直接父类,将一直向上追溯之Object类
9)子类最多只能继承一个父类,即java是单继承机制
10)不能滥用继承,自类和父类必须满足 is-a 关系
5 super关键字
5.1 基本介绍
super代表父类的引用,用于访问父类的属性、方法、构造器
5.2 基本语法
1)访问父类属性,但不能访问peivate属性
super.属性名;
2)访问父类的方法,不能访问父类的private方法
super.方法名(参数列表);
3)访问父类构造器
super(参数列表);只能放在构造器第一句,只能出现一句,不能与this()同时出行
5.3 super给变成带来的便利
1)调用父类构造器的好处(分工明确,父类属性由父类初始化,子类属性由子类初始化)
2)当子类中有和父类中的成员(属性或方法)重名时,为了访问父类成员,必须使用super
3)super的访问不限于直接父类,如果爷爷类和本类中有同名成员也可以使用super去访问爷爷类成员;如果多个基类中都有同名成员,使用super访问就遵循就近原则,也遵循访问控制权限规则。