一、访问修饰词
1、在我们写出的代码中,所有代码都需要有访问控制,这样可以提高代码安全性
2、Java为我们提供了4个访问修饰词public、protect、default、private
(1)public——公共的,最高的访问级别,被public修饰的类、方法、属性可以被所有成员访问。
(2)protected——保护的,能被同包的类以及其子类(包括其他包的子类)访问
(3)[default]——友好的,能被同包的类访问,没有修饰词直接不写
(4)private——私有的,只能被本类访问
3、值得一说的是private,初学者都一个疑问,那就是为什么会这种只能被本类访问的修饰词语出现。
下面举个列子
//定义一个人的类
public class Person{
//属性,定义为私有,private一般会和setter/getter连着用,用来对限制的属性做出限制
private String name;
//对取得用户名的权限做出限制
public String getName(Boolean isAdmin) {
if(isAdmin){
return name;
}
}
//对设置用户名的格式做出限制
public void setName(String name) {
if(name==null|name=="")
return;
this.name = name;
}
}
//我们在对name进行操作的时候就可以使用getName()和setName()这个两个方法,而不是直接访问name,这提高了代码的安全性。
二、抽象(abstract)
1、抽象可以用来修饰类和方法
2、被抽象的类是不能被实例化的抽象类,也就是无法创建他的对象。
3、被抽象的方法是抽象方法,抽象没有方法体。
4、抽象类和抽象方法一般用在父类中,这个类一般被子类继承,他的方法也一定由子类重写。也就是说,父类中有抽象方法,那么子类就必须重载这个方法。
5、抽象类中可以有普通方法,但是抽象方法必须存在抽象类中。
//父类
pubic abstract class Animal{
String name;
//抽象方法,必须存在于抽象类中
public abstract void eat(String food);
//普遍方法,抽象类中可以有普通方法,
public void drink(){
System.out.println("Drink water!");
}
}
//子类
public clss Cat extends Animal{
//抽象方法一定会被子类重写,普通方法直接被继承了
@Override //@Override重写表识
public void eat(Sring food){
System.out.println("我喜欢吃"+food);
}
}
三、final(终态)
1、final就是不可改变,他可以修饰非抽象类,非抽象方法和变量。
2、final修饰的类,将不再能被继承。
3、final修饰的方法,将不再能被子类重写。
4、final修饰的变量必须赋值,且不能再改变。也就是成为我们常说的常量。
一般来说,被final修饰的属性(也就是常量)都会全部大写
pubic final int FLAG=1;
四、static(静态)
1、static可以用来修饰类的属性,方法,代码块。
2、当类和方法被修饰后,他们就属于这个类,而不是再是对象了。我们可以通过类.属性名,类.方法()来调用他们。
3、被static修饰的代码块会在这个类加载的时候执行。
public class Test{
static{
System.out.println("我是代码块!");
}
//定义一个静态的属性和方法,代码块
public static String str="我是静态属性!";
public static void say(){
System.out.println("我是静态方法!");
}
}
//
public class Main{
public static void Main(String[] args){
Test.str;
Test.say;
}
}
注意:
1.被static修饰的变量将在整个程序中只有一份。
2.被static修饰的方法不需要通过所属类的实例(对象)来调用,所以在静态方法中,不能使用this,也不能访问此类的非静态方法与非静态变量。
五、
修饰类,只能使用public,abstract,final
修饰方法,可以使用public,protected,(default),private、static
修饰属性,可以使用public,protected,(default),private
、static