关于Java中修饰符的总结(fina除外)

 更新时间:2016年09月21日 07:03:25   投稿:jingxian  
下面小编就为大家带来一篇关于Java中修饰符的总结(fina除外)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

public/protected/private

public表示公开,private表示私有,protected表示保护,什么都不写表示默认default。

方法:

public protected default private

√ √ √ √ 同一类中

√ √ √ × 同一包中

√ √ × × 子类中

√ × × × 不同包中

成员变量:

考虑的安全性和健壮性的问题,成员变量一般为私有,并对外提供一些public的方法修改成员变量,在修改的方法中对输入进行判断和控制。

Private成员变量只能在类的内部使用。Public的成员变量可以在类的外部使用。

类:

类的权限修饰符只有不加和public两种。不加表示只有同一个包的类可以访问,public类所有的其他类都可以访问。

Static

意为静态,用于修饰成员变量、方法、代码块。

静态成员变量

静态成员变量随着类的加载而加载,多个对象共享该静态成员变量。看如下代码:

静态方法

当修饰方法的时候,这个方法随着类的加载而加载,直接通过类名来调用。很多工具类中的方法都是静态的,直接通过“类名.方法名”调用。不过静态方法中不能使用非静态成员变量和非静态方法。

静态代码块

静态代码块(java的类在产生对象的时候,在调用构造方法的时候,还会调用构造代码块)。

请看下列代码(证明构造方法、构造语句、静态构造语句运行的先后顺序):

需要注意的是:

(1)静态方法不能调用非静态方法, 静态的方法是在构造该类时加载的,类加载时会加载静态的方法;此时非静态方法还没有加载,类初始化后才加载非静态方法;所以静态方法不能调用非静态方法。通过在静态方法的内部创建对象(或形式参数来传递的对象)来间接访问是完全可以的。

(2)java中的main方法必须写成static的,因为,在类加载时无法创建对象,静态方法可以不通过对象调用。所以在类加载时就可以通过main方法入口来运行程序。

注意:父类中是静态方法,子类中不能覆盖为非静态方法。在符合覆盖规则的前提下,在父子类中,父类中的静态方法可以被子类中的静态方法覆盖,但是没有多态。

一个类在什么时候被加载?时机 (延迟加载,能不加载就不加载

(1)new 一个对象的时候,加载

这个很好理解,不解释了。(2)没有创建对象,访问类中静态成员(方法和属性)

(3)声明一个类的引用,不加载(4)创建子类,先加载父类,再加载子类

(5)父类中的公开静态方法,子类继承,使用子类的类名调用此方法,加载父类

Abstract

这个修饰符表示抽象,可以用在方法和类前面。

抽象方法表示,类应该具备此功能,但不同的子类应该有不同的实现方式,所以没有定义具体如何做。具体如何做由子类自己实现。子类在实现所有抽象方法后才能new对象。

如有类的内部有抽象方法,则类也必须是抽象的。抽象类不能直接new对象。抽象类中可以有非抽象方法。

以上就是小编为大家带来的关于Java中修饰符的总结(fina除外)的全部内容了,希望对大家有所帮助,多多支持脚本之家~

相关文章

  • Java中的集合工具类Collections详解

    Java中的集合工具类Collections详解

    这篇文章主要介绍了Java中的集合工具类Collections详解,java.utils.Collections是集合工具类,用来对集合进行操作,不是Collection集合的根接口,这个要区分开来,需要的朋友可以参考下
    2024-01-01
  • SpringBoot集成screw实现数据库文档生成的代码示例

    SpringBoot集成screw实现数据库文档生成的代码示例

    数据库设计文档是项目技术文档的重要组成部分,Screw 是一款开源的数据库文档生成工具,它支持多种数据库类型,并能生成丰富格式的文档,本文将通过一个实际的例子,展示如何使用 Spring Boot 集成 Screw 生成数据库设计文档
    2024-07-07
  • Java实现一个达达租车系统的步骤详解

    Java实现一个达达租车系统的步骤详解

    这篇文章主要给大家介绍了利用Java实现一个达达租车系统的步骤,文中给出了详细的实现思路和示例代码,并在文末给出了完整的源码供大家学习下载,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-04-04
  • SpringCloud的Eureka模块详解

    SpringCloud的Eureka模块详解

    这篇文章主要介绍了SpringCloud的Eureka模块详解,Spring Cloud 封装了 Netflix 公司开发的 Eureka 模块来实现服务治理,就是提供了微服务架构中各微服务实例的快速上线或下线且保持各服务能正常通信的能力的方案总称,需要的朋友可以参考下
    2023-07-07
  • MyBatis实现MySQL批量插入的示例代码

    MyBatis实现MySQL批量插入的示例代码

    本文主要介绍了MyBatis实现MySQL批量插入的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • java实现批量导入.csv文件到mysql数据库

    java实现批量导入.csv文件到mysql数据库

    这篇文章主要为大家详细介绍了java实现批量导入.csv文件到mysql数据库,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • Mybatis的dao层,service层的封装方式

    Mybatis的dao层,service层的封装方式

    这篇文章主要介绍了Mybatis的dao层,service层的封装方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • Java AOP知识详细介绍

    Java AOP知识详细介绍

    这篇文章主要介绍了Java AOP知识详细介绍的相关资料,需要的朋友可以参考下
    2017-01-01
  • SpringBoot如何实现Tomcat自动配置

    SpringBoot如何实现Tomcat自动配置

    这篇文章主要介绍了SpringBoot如何实现Tomcat自动配置,帮助大家更好的理解和学习使用SpringBoot框架,感兴趣的朋友可以了解下
    2021-03-03
  • Java JVM调优五大技能详解

    Java JVM调优五大技能详解

    这篇文章主要为大家介绍了JVM调优的五大技能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-11-11

最新评论