【Java】所有修饰符总结public、protected、private、default、static、final、abstract等一定和否定的判断以及修饰符联用能否共存,教你如何轻松判断!

大家好,我是Ziph!

由于所学的很多修饰符联用来修饰属性方法的问题,我做一个简单的修饰符总结,还拿出修饰符联用修饰方法和属性为什么不能修饰的例子来给大家一个便于记忆的方法窍门

  • 一定要看三个修饰符的总结,真香警告

四大权限修饰符

public(公开的)

说起公开的,就像所说的一样,当public修饰类、成员、方法时,它是对外公开的,在任何地方都可以被调用(开放派)

private(私有的)

炸耳一听私有的,你肯定觉得它很自私,对,它就是很自私。当private修饰类、成员、方法时,他就是私有的,仅本类可以使用,谁都不可以碰(保守派)

protected(受保护的)

来谈谈这个受保护的,它的确是被保护了起来,除了public能任意派遣它以外,protected对来自的外部(除本类、同胞、子类的其他)类,就变得自私起来

default(默认的)

的确是默认的,default表示默认访问修饰符,可以加,也可以不加。变量或方法没有访问修饰符时,就是默认使用了default来修饰

四大访问修饰符权限(从严到宽,按权限大小个站好!)

在这里插入图片描述

三大修饰符

这个总结绝对香,够你喝一壶的!

abstract(抽象的)

abstract可以修饰类(抽象类)、方法(抽象方法)
  • 抽象类
1. 抽象类不可被实例化,且抽象类一定有子类,需要通过子类实现
2. 抽象方法所在的类,一定是抽象类
3. 抽象类中可以没有抽象方法
4. 继承抽象类的子类必须要重写抽象类中被abstract修饰的抽象方法,如果不继承就必须要把自己也变成抽象的子类
  • 抽象方法
1. 格式:没有方法体,包括{},如:public abstract void eat();
2. 抽象方法只保留方法的功能,而具体的执行,交给继承抽象类的子类,由子类重写此抽象方法
3. 若子类继承抽象类,并重写了所有的抽象方法,则此类是一个“实体类”,即可以实例化
4. 若子类继承抽象类,没有重写所有的抽象方法,意味着此类中仍有抽象方法,则此类必须声明为抽象的!
  • 接口里的方法
1. 接口interface内的方法默认修饰就是public abstract,类似default不管写不写默认修饰
  • 不能与abstract共存的修饰符
1. private:因为abstract是表明希望被子类覆盖,但是private修饰后子类看不到,覆盖不了就失去了abstract修饰的意义
2. static:因为如果是static就需要创建对象,但abstract不需要创建对象实例化,而且也不允许实例化。所以两者矛盾,没有意义
3. final:因为final表示不能被子类覆盖,abstract是表示希望被子类覆盖。从而也是矛盾的一对,必将不欢而散
4. 属性和构造方法:因为属性和构造方法不能被重写覆盖

static(静态的)

static可以用来共用类变量(静态属性)、类方法(静态方法)、常量(静态常量)、代码块或初始代码块(静态代码块)、内部类
  • 静态属性
1. 由类创建的所有的对象,都公用这一个属性
2. 当其中一个对象对此属性进行修改,会导致其他对象对此属性的一个调用(因为为共用一个,即:第一个人修改了值,第二个人用第一个人修改后的值进行后续操作)
3. 类变量是随着类的加载而加载,而且独一份
4. 静态的变量不必创建对象,可以直接用“类名.类变量”的形式来调用
5. 类变量的加载是要早于对象,所以当有对象以后,可以“对象.类变量”使用,但是“类.实例变量”是不行的
6. 类变量存在于静态域中
  • 静态方法
1. 随着类的加载而加载,在内存中也是独一份
2. 可以直接通过“类.类方法”的方式调用
3. 静态方法内部可以调用静态的属性或静态的方法而不能调用非静态的属性和方法
4. 非静态的方法是可以调用静态的属性和方法
5. 静态的方法内是不可以有this或super关键字的
  • 静态常量,即:全局变量
1. final修饰即为常量,用static修饰常量即为全局变量
2. 在实际的开发中,静态常量可以做到:该改一处而改全处作用,大大的减少修改和出错的地方
  • 应用
1. 使用静态的变量可以实现在全类中进行“累加计算”的效果,因为静态变量独一份,随着不同的对象修改而改变
2. 使用静态方法可以实现对创建对象个数的记录,了解用法实例点击:静态方法记录创建对象个数实例
3. 静态常量便于开发维护(可以暂时不考虑)
  • 注意:静态的结构(static的属性,方法,代码块,内部类)的生命周期要早于非静态的结构,同时被回收也要晚于非静态的结构,大白话就是比非静态早执行、晚结束

final(最终的)

final可以用来修饰类(最终类)、变量(最终属性)、方法(最终方法)
  • 最终类
1. 这个类就不能被继承。如:String类、StringBuffer类、System类都是被final修饰,不能被继承
  • 最终方法
1. 特点就一个不能被子类重写覆盖、修改
  • 最终属性
1. 此属性就是一个常量,一旦初始化后就不可以再被赋值,习惯上,常量用大写字符表示
2. 此常量不能使用默认初始化
3. 常量基本默认public static final修饰
4. 可以显示局部变量的初始化,实例变量的初始化、动态代码块和构造方法,静态变量的初始化和静态代码块
  • 全局变量
1. 用static final修饰为全局变量
2. 在实际的开发中,静态常量可以做到:该改一处而改全处作用,大大的减少修改和出错的地方
  • 注意
1. 基本数据类型常量,值不可变
2. 引用数据类型常量,地址不可变

下面链接是三个修饰符知识点章节内容(章节内附带思维导图模板),了解具体用法请点击跳转
Java三个修饰符知识章节

总结不易,点赞双击!嘿嘿!

如有错误,立即告知修改!

发布了54 篇原创文章 · 获赞 96 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_44170221/article/details/104449750
今日推荐