1.abstract(抽象):
1.1抽象类
语法:
//修饰符 abstract class 类名{};
public abstract class Animal{}
抽象类是不完整的类,抽象类无法独立存在,即抽象类不能被实例化(不能被new为对象);
public abstract class Animal{
}public class Test {public static void main(String[] args) {//错误,抽象类不能不实例化
// Animal an = new Animal(); }
}
1.2 抽象方法
语法
//修饰符 abstract 返回值 方法名();
public abstract void eat();
如果子类继承了一个抽象方法,那么子类要么把这个抽象方法完成,要么这个子类也是一个抽象类
特点:
抽象方法必须包含在抽象类中;
子类继承抽象父类的时候,子类要么实现父类中的抽象方法,要么这个类也是抽象类
抽象类中不一定有抽象方法,但是有抽象方法的类一定是抽象类
2.static(静态)
被static修饰过的是存放在方法区中的,唯一性。建议通过类名.属性名和类名.方法名的方式进行访问。
2.1静态属性
语法
//修饰符 static 数据类型 变量名;
public static String name;
2.2静态方法
语法
//修饰符 static 返回值 方法名(参数){};
public static void Test(){
}
2.3静态代码块
语法
public static class Test{static{//写在类里面}
}
在类加载的时候就会执行里面的代码,与静态属性的优先级一样,要看谁在前面谁就先执行,只会运行一次,可以用来对某些属性进行初始化
public class Demo2 {static String name = "静态属性";//静态代码块与静态属性执行没有先后顺序,看谁写在前谁就先执行//静态代码块在类加载的时候就会被执行,且只会执行一次static {System.out.println(name);System.out.println("静态代码块");}
}
特点:
1.静态方法允许直接访问静态属性
2.静态方法不能直接访问非静态属性
3.静态方法没有this和super关键字
4.静态方法可以被继承,不能重写,没有多态
5.静态代码块在类加载的时候被执行,且在整个程序运行期间只会执行依次
3.final(最终)
不可进行更改
3.1final修饰的类,最终类
语法·
//修饰符 final class 类名{}
public final class Test{
}
final修饰的类不能被继承,但是可以继承别的类
3.2final修饰的方法,最终方法
语法
//修饰符 final 返回值 方法名(参数){}
public final void eat(){
}
final修饰的方法不能被子类重写
3.3final修饰的属性,最终变量(常量)
语法
//修饰符 final 类型 变量名;
public final int numbet = 1;
1.final修饰的基本数据类型,值不可变;
2.修饰的引用数据类型,地址不可变
final修饰的属性的3种赋值方式:
//1.直接赋值
public class Demo3 {public final int num = 1;}
//2.在静态代码块中进行赋值
public class Demo3 {public static final int num;//这个变量也要求是静态的static {num = 1;}}
//3.在构造方法中进行赋值
public class Demo3 {public final int num;public Demo3(){num = 1;}
}