关于abstract关键字、final关键字和static关键字注意事项的整理归纳

关于abstract关键字、final关键字和static关键字注意事项的【整理归纳】

(针对小白,大神绕道~~~~)
---------------------------------------------分割线-------------------------------------------

abstract关键字

如果我们学过继承,那么我们一定知道父类,那么有一种类是专门用来做父类的,他就是抽象类(abstract class)

上面说的只是为了让你更好的记住:抽象类只能被继承,不能被实例化,也就是说不能用new,new出一个女朋友(对象)

抽象类中的方法分为两种,首先是一般方法,其次是抽象方法(abstract修饰的方法),abstract方法只需声明而无需实现,他的定义只声明返回值的数据类型,方法名称和所需参数,样貌如下:

abstract 返回值的数据类型 方法名(参数表);
例如:
abstract public double getArea();

值得注意的是,抽象类中不一定要包含抽象方法,但是包含抽象方法的类,必须要声明为抽象类

当一个方法被定义成抽象方法时,继承他的抽象类的子类必须实现该抽象方法 (强制要求) ,或者改子类也定义成抽象类,否则报错

那抽象类能不能有构造方法呢?

答案是可以,但是有一个唯一的要求就是,该构造方法不能被声明为抽象的,由于不能用抽象类new成对象,也因此在抽象方法中定义构造方法是多余的。

static关键字

被static修饰的成员叫静态成员或者类成员,而不用static修饰的成员叫实例成员,其实static,我们只需要把它归给类就可以,他是专属于类的,不属于任何对象。
关于静态变量,除去必要的规则外,唯一需要注意的点是,在调用时,尽量要用给你相似,类名调用,虽说也能用对象调用。
关于静态方法,有一个值得注意的地方如下:
|-------在静态方法中不能使用this或super。因为this代表调用该方法的对象,但现在“静态方法”既然不需要对象来调用,this自然也不需要也不应该存在于”静态方法“内部,而super与this一样,super指的也是对象,所以super同意也不能存在于静态方法中。

final关键字(不细说)

总结

好了,下面才是我要说的易错、易混淆点:
1.static修饰的变量必须赋值吗?
定义时不一定要赋予初值,也可以通过对象或者方法(只能是静态方法)更改

2.final修饰的变量必须赋值吗?
必须赋予初值(不一定要在一个语句,如可以final int a;a = 5;),而且赋予初值后不能再更改。

3.static final修饰的变量必须赋值吗?
必须赋予初值(一定要在一个语句,如可以static final int a = 5;
但是不可以static final int a;a = 5;),而且赋予初值后不能再更改。
4.静态方法中不能使用非静态成员,但是可以使用类内的其他静态成员。
5.静态成员方法中可以通过new构造方法创建对象
6.抽象类中不一定包含抽象方法,但包含抽象方法的类一定要声明为抽象类。
7.由于抽象类是需要被继承的,所以abstract类不能用final修饰,一个类不能既是抽象类,又是最终类。
8.abstract不能与private、static、final或native并列修饰同一个方法。

发布了7 篇原创文章 · 获赞 8 · 访问量 374

猜你喜欢

转载自blog.csdn.net/weixin_40032967/article/details/104331666