目录
-
private、protected、(default)、public权限修饰符及一些细节、
-
构造方法前加上private怎么创建对象、
-
main函数的参数理解、
-
语法糖
一、四种权限修饰符
Java中的访问修饰符分为:
- 访问修饰符
- 非访问修饰符
其中访问修饰符指的就是这四种:
- private
- protected
- (default)
- public
对于非访问修饰符:
-
static 修饰符,用来修饰类方法和类变量。
往期博客简单记录了static关键字和this关键字:Java课堂篇4_关键字this、static的理解 -
final 修饰符,用来修饰类、方法和变量,final 修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的。
-
abstract 修饰符,用来创建抽象类和抽象方法。
-
synchronized 和 volatile 修饰符,主要用于线程的编程。
更多参考:菜鸟教程:Java修饰符
1.1什么是访问修饰符
访问权限修饰符,笼统的说可以修饰:
- 类
- 成员变量
- 成员方法
细说:
-
default (即默认,什么也不写): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。
-
private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)
-
public : 对所有类可见。使用对象:类、接口、变量、方法
-
protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)。
1.2访问修饰符的下访问权限
被访问修饰符修饰的类、成员变量、成员方法 会像 外界(其他的类)展示不同的控制权限(主要指访问)
其中对 于 外界,可以根据 类与类之间的关系、类与类之间的相对位置 可以分为:
- 同一个包下的类
- 同一个包下的存在继承关系
- 不同包下的类但是类之间存在继承关系
- 不同包下的类
这里说一下protected需要注意的地方:
二、构造方法前加private怎么创建对象及只限制一次对象的创建
package one.test;
public class A {
public String name1 = "public";
String name2 = "(default)";
protected String name3 = "protected";
private String name4 = "private";
//计数对象的个数,必须是静态成员变量,要求只能创建一个对象
private static int count = 0;
public String getName4() {
return name4;
}
public void setName4(String name4) {
this.name4 = name4;
}
private A() {
super();
}
private A(String name1, String name2, String name3, String name4) {
super();
this.name1 = name1;
this.name2 = name2;
this.name3 = name3;
this.name4 = name4;
}
/**
* A类中的create可以访问private修饰的构造放方法
* 需要时静态方法
* @return
*/
static A create() {
if(count == 0) {
count++;
return new A();
}
else {
return null;
}
}
}
package one.test;
public class QuanXianXiuShiFu {
public static void main(String[] args) {
// TODO Auto-generated method stub
//构造方法private修饰,不能直接创建对象
//A a = new A();
//需要在A类中创建一个create(),通过调用create()来创建
A a = A.create();
}
}
三、main函数的参数
Eclipse里面我们可以指定一个项目中的主main()函数
可以给main()
函数设置参数,对应的是String[] args
字符串数组 ,然后在函数中遍历参数字符串
四、语法糖
语法糖就是对于某些代码的书写,我们按照某些特定的规则可以简写,编译器编译执行的时候会自动帮我们完成补全
顾名思义写简便的代码感觉像吃糖一样~
下面举栗的是一种函数 对于 不确定个数 的可变参数 一种语法糖形式的处理,有点类似js里面的内置数组
需要注意的是,对于不同类型的多个参数,可省参数的位置 必须 在后,例如上例,y写在后面就会报错
当然,语法糖现象不止此一种,在Lambda表达式中也会体现