Java基础之abstract、static、final

1.abstract

1.含义
abstract的意思是:抽象的,似是而非的,像,却又不是,具备某种对象的特征,但是不完整。

  • 是不是很绕?这到底是什么意思呢?大家都知道,类是用来描述现实世界真实存在的事物的,然后我们为了方便,把多个类中共有的属性,提取出来,形成一个父类,这就有了继承关系。
  • 但是你想,一个Cat类,我们可以new一个对象cat,cat就表示一只猫,那Cat的父类Animals的话,new一个对象animal是什么?我们是不是没有办法来具体的说animal到底是什么?
  • 对象是用来表示真实存在的事物的,但是一个animal显然在现实世界是不存在这么一个对象的,那我们怎么限制这种情况呢?abstract就出现了。
    应用

1.修饰类
语法:

访问权限修饰符 abstract class	类名{
}
//例如
public abstract  class  Animals{
}

2.修饰方法
语法:

访问权限修饰符 abstract 返回值类型 方法名(形参列表);
//例如
public abstract void eat();

相信大家也发现了,abstract修饰方法的时候没有写方法体(也就是{}以及里面的代码),这没有写错,抽象方法不需要写方法体,但是如果有类继承了该抽象类,必须重写该类的所有抽象方法。
这里面有几个abstract的注意事项:
1.有抽象方法的类一定是抽象类,但是抽象类中不一定有抽象方法
2.一个类继承于抽象类,要么重写父类中所有的抽象方法,要么也为抽象类
3.抽象类无法直接创建对象,但是可以用于声明
4.不可以修饰属性

2.static

static是我们的老朋友了,我们经常见到,但是不知道它的意思是什么,今天它来了,它的意思是静态的。
静态的概念

  1. static可以修饰属性、方法、类(不常见,只能修饰内部类),即为静态属性(类属性)、静态方法(类方法)、内部类
  2. 静态成员是全类所有对象共享的,全类只有一份,不因创建多个对象而产生多份
  3. 不必创建对象,也可通过类名,直接访问静态成员
  4. 访问静态属性和方法时,可以直接通过类名.静态属性,以及类名.静态方法名调用

静态与实例的区别
1.实例属性是每个对象各自持有的独立空间(多分),对象单方面修改,不会影响其他对象。
2.静态属性是整个类共同持有的共享空间(一份),任何对象修改,都会影响其他对象。

应用
1.修饰属性
语法:

访问权限修饰符 static 数据类型 变量名;
//例如
public static int number;

2.修饰方法
语法:

访问权限修饰符 static 返回值类型 方法名(形参列表){
}
//例如
public static void test(){
}

3.修饰内部类
语法:

访问权限修饰符 static class 类名{
}

它的语法很简单,但是请注意,普通类是不允许声明为静态的,只有内部类才可以,而什么是内部类呢?下面举个例子给大家看一下

public class OuterClass {
      public static class InnerClass{
          InnerClass(){
              System.out.println("======== 我是一个内部类'InnerClass' =========");
          }
      }
  }

4.修饰代码块:类加载之初就执行,而且只执行一次
static {
}

1.类加载时,触发静态代码块的执行(仅一次)
2.执行地位:静态属性初始化之后
3.作用:可为静态属性赋值,或必要的初始行为
特点
1.静态方法允许直接访问静态成员
2.静态方法不能直接访问非静态成员
3.静态方法中不允许使用this或super关键字
4.静态方法可以继承,不能继承,没有多态
5.静态方法的优点:方便调用,节省内存

3.final

概念
final:最后的,不可更改的。
可以说:使用final修饰的变量等于常量
应用
1.修饰类
语法:

访问权限修饰符 final class 类名{}
//例如
public final class Person{}

类不能被继承,final修饰的类被称之为最终类
2.修饰方法
语法:

访问权限修饰符 final 返回值类型 方法名(形参列表){}
//例如
public final void eat(){}

不能被重写,不能在抽象方法中使用
3.修饰属性
语法:

访问权限修饰符 final 数据类型 变量名;
//例如
public final int num;

不可以被修改

生命周期

成员变量
1.静态变量:
类加载之初
类被回收
2.非静态变量
对象创建
对象不再使用时,过一段时间被GC回收
局部变量
第一次赋值的时候被初始化
方法使用结束
方法
调用时
调用结束

猜你喜欢

转载自blog.csdn.net/qq_43336579/article/details/107964344