Java修饰符
Java的修饰符主要分为:
- 访问修饰符
- 非访问修饰符
修饰符用来定义类、方法或者变量,通常放在语句的最前端。
访问修饰符
- dedault 默认修饰符
- private 私有修饰符
- public 公有修饰符
- protected 受保护修饰符
访问权限: private>dedault>protected>public
访问修饰符和继承的关系
- 父类声明为public的方法在子类中也必须为public
- 父类中什么为protected的方法在子类中要么被声明为protected或者public,不可以声明为private
- 父类中声明为private的方法,子类不可以继承
非访问修饰符
- static修饰符 (用来创建类方法或者类变量)
- final修饰符 (用来修饰类,方法和变量,final修饰的类以及方法都不可以被继承,修饰的变量为常量,不可以修改)
- abstract修饰符 (用来创建抽象类和抽象方法)
final修饰变量注意:
- final修饰的变量是基本类型:变量存储的数据值在被使用时不能改变
public class Demo{
public static final String USER_ADMIN = "asmin"
public static final String PASSWORD = "123456"
public static void pass(){
PASSWORD = "1234"; //将输出一个错误
}
- final修饰的变量是引用类型:变量存储的地址值不能发生改变,但是地址指向的对象内同可以改变。也就是说final对象的引用不能改变,但是里面的值可以改变
枚举
枚举是Java的一种特殊类型。
枚举的作用:为了做信息的标志和信息的分类。
枚举的格式:
修饰符 enum 枚举名称{
第一行都是罗列枚举的实例名称。
}
enum Season{
SPRING,SUMMER,AUTUMN,WINTER;
}
枚举的特征:
- 枚举类都是继承了枚举类型:java.lang.Enum
- 枚举都是最终类,不可以被继承
- 构造器都是私有的,枚举对外不能创建对象
- 枚举的第一行默认都是罗列枚举对象的名称。
- 枚举相当于是多列模式
public final class Season extends java.lang.Enum<Season>{
public static final Season SPRING = new Season();
public static final Season SUMMER= new Season();
public static final Season AUTUMN= new Season();
public static final Season WINTER= new Season();
public static Season[] values();
public static Season valueOf(java.lang.String);
}
抽象类
使用abstract修饰的类叫做抽象类,如果修饰方法则叫做抽象方法
语法格式:
修饰符 abstract class 类名{
}
public abstract class Animal{
//抽象方法,定义抽象方法时,不能声明方法体。并且如果定义了抽象方法,那么这个类就必须定义为抽象类。
public abstract void run();
}
注意事项:
- 类有的成员(成员变量、方法、构造器)抽象类都具备
- 抽象类中不一定有抽象方法,有抽象方法一定是抽象类
- 一个类继承了抽象类,必须写抽象类的全部方法,否则这个类也必须定义为抽象类
- 不能是使用adstract修饰变量、代码块、构造器。
- 抽象类不能创建对象
final和abstract的区别:
1.互斥关系
2.abstract定义的抽象类作为模板被子类继承,final修饰的类不可以被子类继承
3.抽象方法定义的方法需要让子类重写,final定义的方法子类不可以重写
接口
接口是个抽象类型,时抽象方法的集合,接口通常使用interface关键字来声明,一个类可以通过继承接口的方式,从而继承接口的抽象方法。
注意事项:
- 接口无法被实例化,但是可以被实现
- 除非实现接口的类是抽象类,否则该类要实现接口中的所有方法
接口与类的区别: - 接口不能实例化对象
- 接口没有构造方法
- 接口中的方法必须是抽象方法
- 接口不能包含成员变量,除了static和final变量
- 接口不是被类继承,而是要被类实现
- 接口支持多重继承
接口的实现
但类实现接口的时候。类必须要实现接口里面的全部方法,否则类必须声明为抽象类。
public interface Animal{
public void eat();
public void travel();
}
public class ManmalInt implements Animal{
//重写接口方法
public void eat(){
}
public void tracel(){
}
}
接口实现规则:
- 一个类可以实现多个接口
- 一个类只能继承一个类,但是可以继承多个接口。
- 接口只能继承另一个接口