属性
定义在类的大括号中
局部变量
定义在类的方法(形参,方法体),构造器(形参,构造器内部),代码块中
两者之前的不同
1. 声明位置的不同
2. 权限修饰符:
属性可以用private、缺省、protected、public进行修饰
局部变量不能被权限修饰符进行修饰
3. 默认初始化的情况不同:
属性在定义的时候不用显示赋值,因为它会默认初始化(参考注意点总结一,数组元素的默认初始化)
局部变量不会默认初始化,声明的时候必须显示赋值( 形参在调用时赋值即可 )
4. 内存中的位置不同
属性(非static):在堆空间中 static的在方法区的静态域中
局部变量:在栈空间中
二、方法
如果方法没有返回值,那么return的作用就是结束该方法。
方法的重载
同名不同形参(只看方法名和形参列表)
可变形参
1. 可变个数形参的方法与本类中方法名相同,形参类型也相同的数组之间不构成重载。换句话说,二者不能共存。也就是不能构成重载(可以重写)
2. 可变个数形参在方法的形参中,必须声明在末尾
3. 可变个数形参在方法的形参中,最多只能声明一个可变形参。
4. 当调用可变个数形参的方法时,传入的参数个数可以是:0个,1个,2个...
三、封装性
什么是封装性
简单来说就是利用四种权限修饰符,来修饰类,属性,方法,达到把该隐藏的隐藏起来,该暴露的暴露出来的效果
封装性的体现
1. 将类的属性xxx私化(private),同时,提供公共的(public)方法来获取(getXxx)和设置(setXxx)此属性的值
2. 不对外暴露的私有的方法
3. 单例模式(将构造器私有化)
4. 如果不希望类在包外被调用,可以将类设置为缺省的
作用范围
类型 | 同一个类 | 同一个包下 | 不同包之间 | 同一个项目下 |
pirvate | 可以 | |||
缺省(默认) | 可以 | 可以 | ||
protected | 可以 | 可以 | 可以 | |
public | 可以 | 可以 | 可以 | 可以 |
说明
4种权限都可以用来修饰类的内部结构:属性、方法、构造器、内部类
修饰类的话,只能使用:缺省、public
四、构造器(构造方法)
作用
1. 创建对象(new 一个对象实体)
2. 初始化对象的信息
说明
1. 如果没显式的定义类的构造器的话,则系统默认提供一个空参的构造器
2. 一个类中定义的多个构造器,彼此构成重载
3. 一旦我们显式的定义了类的构造器之后,系统就不再提供默认的空参构造器(没有空参构造器了)
4. 一个类中,至少会有一个构造器
五、This关键字
可以调用的结构:属性,方法,构造器
理解: 当前对象的 或者 当前正在创建的
this调用构造器
格式: this( 形参 ) ; 来调用当前对象中的构造器
1. 我们在类的构造器中,可以显式的使用"this(形参列表)"方式,调用本类中指定的其他构造器
2. 构造器中不能通过"this(形参列表)"方式调用自己
3. 如果一个类中有n个构造器,则最多有 n - 1构造器中使用了"this(形参列表)",因为肯定有一个是super(),来加载父类种的结构
4. 必须声明在构造方法体内的首行
5. 构造器内部,最多只能声明一个"this(形参列表)",用来调用其他的构造器
六、Import的使用
1. 在源文件中显式的使用import结构导入指定包下的类、接口
2. 声明在包的声明和类的声明之间
3. 如果需要导入多个结构,则并列写出即可
4. 可以使用"xxx.*"的方式,表示可以导入xxx包下的所结构
5. 如果使用的类或接口是java.lang包下定义的,则可以省略import结构
6. 如果使用的类或接口是本包下定义的,则可以省略import结构
7. 如果在源文件中,使用了不同包下的同名的类,则必须至少一个类需要以全类名的方式显示。
8. 使用"xxx.*"方式表明可以调用xxx包下的所结构。但是如果使用的是xxx子包下的结构,则仍需要显式导入
9. import static:导入指定类或接口中的静态结构:属性或方法。