访问修饰符:private、default、protected、public
default、public可以修饰类、属性、方法
private、protected只能属性、方法
三大修饰符
abstract:
abstract可以修饰类和方法
修饰类:
1:修饰类,则该类不能实例化对象(不能new出来)
1:可以被子类继承,可以为子类提供共性的属性和方法
抽象类存在构造方法; 构建子类之前会先构建父类对象,父类的共性+子类的独有=完整的子类对象。
2: 可以声明为引用,:(多态)。
abstract class Animal{//该类为抽象类
String breed;
int age;
boolean sex;
public void eat(){}
public void sleep(){}
}
//Animal a=new Animal是不可以的
Animal a = new Dog();//父类引用指向子类,多态
修饰方法:
抽象方法只有声明没有实现,缺少{},末尾使用;结束
abstract class Animal{//该类为抽象类
public abstract void eat();
public abstract void sleep();//
}
1:抽象方法必须包含在抽象类中,抽象类中可以有普通方法,抽象类中可以没有抽象方法。
2: 一个类继承了抽象类那么必须实现抽象类中的所有抽象方法,不实现抽象类中的所有抽象方法此类还是一个抽象类。
一个类继承了一个抽象类,不实现所有抽象方法也可以!那么他还是抽象类
static:
static可以修饰属性、方法
修饰属性:
静态属性存储的地方是整个类共享的空间(方法区),所有基于此类创建的对象共同持有一份,任何对象的改变,都会影响其他对象(任何实例化的对象调用静态属性改变值都会影响其结果)。
访问静态属性方式:
对象名.静态属性名;
类名.静态属性名;
class Animal{
static int age=1;
}
public test{
public static void main(String[] args){
Animal.age;//第1种方式
Animal a=new Animal();//第2种方式
a.age
//其他对象操作该类会改变该静态值
a.age=10;
Animal b=new Animal();
System.out.println(b.age);//10
}
}
静态方法:
特点: 静态方法只能直接访问静态成员,不能直接访问非静态成员。
class MyClass{
int a = 2;//实例变量
static int b = 20;//静态变量
public static void m1(){
m2();//静态方法可以直接调用静态方法
}
public static void m2(){//静态方法
MyClass mc = new MyClass();
mc.m3();//通过实例化可以调用普通方法
System.out.println(mc.a);//通过实例化可以调用普通变量
System.out.println(b);//b静态变量
}
public void m3(){
m4();//普通方法内可以调用普通方法
}
public void m4(){}
}
系统提供的常见的静态方法:
java.util.Arrays.sort(数组名)
java.util.Arrays.copyOf();
java.lang.Math.sqrt();
java.lang.Math.Random();
final:
final可以修饰类,方法、变量
1:final修饰类:此类不能被继承
final class Class{}
class cla extends Class{}//无法继承
2:final修饰方法:可以被继承,但是不能被覆盖
class Class{
public final void m(){
System.out.println("MyClass m()");
}
}
class cla extends Class{
//会存在m(),但是不能让再出现m();
}
3.final修饰变量:此变量的值不能被改变(常量)
final修饰的变量分为:局部常量|实例常量|静态常量(只能赋值一次)
1.final修饰局部常量 只能赋值一次
2. final修饰实例常量:实例常量不再提供默认值,必须手动赋予初始 值,且只能赋值一次,赋值之后不能改变。
3. final修饰静态常量,必须在类加载结束之前正确赋值