java(访问修饰符)

本文深入探讨Java中的访问修饰符,包括类、方法和变量的不同访问级别。解析static、final、abstract关键字的使用场景及接口的概念,对比抽象类与接口的差异,为Java开发者提供全面的理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#访问修饰符
1,类的完整格式
访问修饰符 修饰符 class类名称 extends 父类名称 implement接口名称{}

2.方法的完整格式
访问修饰符 修饰符 返回类型 方法名称(参数列表) throws 违例列表{}

3,变量的完整格式
访问修饰符 修饰符 数据类型 变量名;

4,static 修饰符
意思:静态,用来修饰成员变量和成员方法,也可以形成静态static代码块
被static修饰的成员变量和成员方法独立于该类的人和对象,也就是说,他不依赖类的实例,被类的所有实例共享。
只要这个类被加载,java虚拟机就能根据类名在运行时数据区的方法内定找到他们,
因此,statc对选哪个可以在他的任何对象创建之前访问,无需引用任何对象,

总结:static修饰后,在其他类或方法中,可以用类名.方法名类名.属性名 直接操作,
静态方法的好处,使用方便,随时调用,优化方法的复用性,
静态方法的缺点,占用静态空间无垃圾回收机制,除复用性强的方法,尽量避免使用静态方法,
静态变量的用处,一个类被实例化为多个对象时,共用一个变量。比如:产品的名称。

在这里插入图片描述补:静态资源归属于类,创建前直接开创了一个空间

变量

1,类变量:
a,由static修饰的变量称为静态变量或类变量。
b,用静态修饰 那么该内容被所有对象所共享,此处所说的共享,是指所有对象使用同一个变量,而非允许所有人使用,权限是由权限修饰符管理

2,成员变量:
a,成员变量定义在类中,在整个类中都可以被访问,
b,成员变量随着对象的建立而建立,随着对象的消失而消失,存在于对象所在的堆内存中。
c,成员变量有默认初始化值

3,局部变量:
a,局部变量只定义在局部范围内,如:函数内,语句内等,只在所属的区域有效
b,局部变量存在与栈内存中,作用的范围结束,变量空间就会自动释放,
c,局部变量没有默认初始化值。

注:成员变量和局部变量的区别:有无默认初始化值,成有,局无。
注:面试题, Java中是否有全局变量?答:无,java万事万物皆对象(在程序员口语中的全局变量一般指 public static)在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

final关键字
一,final关键字可以用来修饰类。、方法、变量。各有不同、
A,修饰类(class)
1,该类不能被继承。
B,修饰方法(method)
1,盖方法可以被继承,但是不能被覆盖,
C,修饰变量(variable)
1.用final修饰后变为常量 ( 常量的定义格式必须是全部大写),包括静态变量、实例变量、局部变量。
D,修饰参数
1,可以读取改参数,但是不能对其做出修改,
二,final关键字不能用来抽象类和接口。
在这里插入图片描述

#abstract修饰符
1,abstract 修饰类,会使这个类称为一个抽象类,这个类将不能生成对象实例,但可以做为对象变量声明的类型(下图),也就是编译时类型,抽象类就相当于一类的半成品,需要子类继承并覆盖其中的方法。
2,abstract修饰方法,会使这个方法变成抽象方法,也就是只有声明没有实现,需要子类继承实现

注意:
a,有抽象方法的类一定是抽象类,但是抽象类中不一定都是抽象方法,也可以全是具体方法,abstract修饰符在修饰类时必须放在类名前,abstract 修饰方法就是要求其子类(实现)这个方法,调用时就可以以多态方式电泳子类覆盖(实现)后的方法,除非子类本身也是抽象类。
b。父类是抽象类,其中有抽象方法,name子类继承父类,并把父类中的所有抽象方法都实现(覆盖)了,子类才有创建对象的实例的能力,否则子类也必须是抽象类、
在这里插入图片描述

接口
接口类拟于抽象类,但是在接口里,都是抽象方法,声明的属性都是常量。可以隐藏前头的,
在抽象类里,可以包含一个或多个抽象法发,但在接口中,所有的方法必须是抽象的,不能有方法体,他比抽象类更加抽象,
接口使用interface声明,可以指定一个类必须做什么,而不是规定他如何去做。在这里插入图片描述
在这里插入图片描述

补:
1,抽象方法,只管声明,不管实现, (public abstract void add()),子类继承抽象类,重写方法,让子类创建对象,

2,接口里只有两种:常量,抽象方法(接口也属于抽象的一种,在常量池里)
3,抽象类(像父类,毫无意义,但是可以通过多个子类创建对象来实现), 意义:保持多态的特性。
4,抽象(可重写) final(不可重写)
5,抽象类和接口功能重复,区别在于,前者灵活运用,后者只适合定义内容

总结:

普通类
       int     a;
       public  void   abc(){.........}
       final  int   a;
 抽象类
 	int      a;
 	public    void   abc(){...........}
 	public     abstract    void     xyz()
 	final    int   a;	 
接口
	int a;
	public  abstract  void  xyz()
	public  void  xyz()

在这里插入图片描述

在这里插入图片描述

java中存在多继承,单继承存在类中。final 可以让某些抽象类不可以重写
接口没有构造方法,
抽象有构造方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值