1.权限修饰符
前面提到了权限修饰符,可以用来修饰类和类的内部结构、方法、内部类和属性以及构造器,以下是几种常见类修饰符的范围:
访问包的位置 | 类修饰符 | |||
private | 缺省 | protected | public | |
本类 | 可见 | 可见 | 可见 | 可见 |
同包的其他类或子类 | 不可见 | 可见 | 可见 | 可见 |
其他包的类或者子类 | 不可见 | 不可见 | 可见 | 可见 |
同一个工程 | 不可见 | 不可见 | 不可见 | 可见 |
缺省:当声明类时不使用public,private,protected修饰符设置类的权限时,称为缺省,这个类预设包存取范围:即只有一个包中的类可以访问这个类的成员变量或成员方法
2.递归方法的使用
递归方法:一个方法体内调用它自身。
方法递归包含了一种隐式循环,它会重复的执行某段代码,但这种重复执行无须循环控制。
递归一定要向已知方向递归,否则这种递归就变成了无穷递归,类似于死循环
例如:
这是普通循环的计算1-100内自然数的和
这是拿递归方法实现的
3.封装与隐藏(封装性)
封装性:高内聚:类的内部数据操作细节自己完成,不允许外部干涉
低耦合:仅对外暴露少量的方法用于自己使用,隐藏对象内部的复杂性,只对外公开简单的接口,便于外界的调用从而提高系统的可扩展性可维护性,通俗的说把该隐藏的隐藏起来,把该暴露的暴露出来,这u是封装性的思想
例如:你在使用冰箱时,你并不需要搞清楚他的内部结构,你只需要通过按钮来实现功能
你开车也不需要搞清楚它的工作原理,只需要松离合,踩油门就可以了
4.类的成员之三:构造器
构造器(任何一个类都有构造器)
①作用:创建对象、初始化对象
这里的Person()其实就是构造器,但是这并不是定义的构造器,而是系统提供的默认构造器
①如果没有显式的定义类的构造器,则系统默认提供一个空参的构造器,权限与类的权限相同
②定义构造器的格式:权限修饰符 类名 (形参){ }
③构造器的重载与方法的重载类似
④一旦显式的定义了类的构造器,系统不再提供默认的空参构造器
⑤在一个类中一定会有一个构造器
5.this关键字
this关键字的使用:
5. 1.this可以用来修饰属性,方法,构造器
5.2.this修饰属性和方法:
this理解为:当前对象
在类的方法和构造器中,我们可以使用this.属性或者this.方法的方式,调用当前对象属性或者方法,但是通常情况下我们省略 this,但是特殊情况下,如果方法的形参和类的属性同名时,我们必须显式的使用this.变量的方式表面此变量是属性
5.3.this 调用构造器
①我们在类的构造器中可以显式的使用this(形参)方式调用本类其他的构造器
②不能用this(形参)调用自己
③如果一个类中有n个构造器,则最多有n-1个调用了this(形参)
④调用的this(形参)必须放在首行
⑤构造器内部最多只能声明一个this(形参),用来调用其他构造器
6关键字package
package关键字的使用
6.1.为了更好的实现项目中类的管理,提供包的概念
6.2.使用package声明类或者接口所属的包,声明在源文件的首行
6.3.包属于标识符,需要遵循标识符的命名规则规范,见名知意
6.4.每.一次就代表一次文件目录.
6.5.同一个包下不能命名同名的接口和类
7import 关键字的使用
import:导入
7.1.在源文件中显式的使用import结构导入指定包下的类,接口
7.2.声明在包的声明和类的声明之间
7.3.如果需要导入多个结构,并列写出即可
7.4.可以使用.*的方式表示可以导入这个包下的所有结构
7.5.如果使用的类或接口是Java.long下定义的(system,String),或者在本包下定义的则可以省略import结构
7.6.如果在源文件中使用了不同包下的同名的类,则必须至少有一个类需要以全类名的方式显示
7.7.使用.*的方式表明可以调用xxx包下的所有结构(不包括子包)。但是如果使用的是xxx子包下的结构,则仍然需要导入子包
7.8.import static:导入指定类或接口的静态结构