关于Java中修饰符的总结(fina除外)
作者:jingxian 发布时间:2023-11-22 23:15:57
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对象。抽象类中可以有非抽象方法。
猜你喜欢
- 更新了AS 3.1.2之后,发现新建Kotlin类,类注释依然木有,没办法只有自己动手了。方法很简单,编辑File Header就可以啦。只
- java 中HttpClient传输xml字符串实例详解介绍:我现在有一个对象page,需要将page对象转换为xml格式并以binary方
- 建造者模式针对的是复杂对象的构建,比如一个产品有多个部分构成,每个部分都可以单独进行生产,这时候就可以用建造者模式,由Builder构造产品
- 目录Java 中线程池创建的几种方式🐱🏍Executors 工厂方法创建👏 new ThreadPoolExecutor() 自
- 最近在做的工作要用到本地方法,需要在Java中加载不少动态链接库(以下为方便延用Windows平台下的简写dll,但并不局限于Windows
- 配置文件请看上篇Java实现redis https://www.jb51.net/article/190922.htm下面测试redis的集
- spring.thymeleaf.cache=false不起作用配置是清除缓存,实现热部署。也就是修改了html后不用重启,刷新页面就能看到
- Java集合是java提供的工具包,包含了常用的数据结构:集合、链表、队列、栈、数组、映射等。Java集合工具包位置是java.util.*
- * String类是不可变类,只要对String进行修改,都会导致新的对象生成。* StringBuffer和StringBuilder都是
- 周末这天手痒,正好没事干,想着写一个分页的例子出来给大家分享一下。这个案例分前端和后台两部分,前端使用面向对象的方式写的,里面用到了一些回调
- 前言属于基础的面试问题,一定要能够回答全哦~一、继承Thread,重写run方法通过自定义一个类(这里起名为:MyThread),继承Thr
- 1.概述Spring MVC是Spring Framework的一部分,是基于Java实现MVC的轻量级Web框架。Spring MVC的特
- 1. 什么是单例模式单例模式指的是在应用整个生命周期内只能存在一个实例。单例模式是一种被广泛使用的设计模式。他有很多好处,能够避免实例对象的
- 1.介绍有时候我们在Linux中运行Java程序时,需要调用一些Shell命令和脚本。而Runtime.getRuntime().exec(
- 其他的不多说了!我们来看看效果吧 一、实现方式一:直接引入compile方式A
- 前言在工作中,比如要实现一个功能,前端传什么参数,后端的controller层中怎么接收参数 ,封装成了什么实体对象,有些参数是在URL上使
- 目录MVC结构简介SpringMVC简介SpringMVC执行流程常用注解1. @Controller2. @ResponseBody3.
- SpringBoot的持久化层可以是Spring内置的轻量级JdbcTemplate、也可以是Hibernate或Mybatis等等,只需要
- 在使用JDBC的时候,数据库据连接是非常宝贵的资源。为了复用这些资源,可以将连接保存在一个队列中。当需要的时候可以从队列中取出未使用的连接。
- 前言在项目中,如果我们要遵循分层领域模型规约: 话,肯定避免不了在DTO、VO、BO、AO、VO、Query等实体的转换,我们通常有几种做法