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

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对象。抽象类中可以有非抽象方法。

时间: 2024-10-03 20:26:15

关于Java中修饰符的总结(fina除外)_java的相关文章

Java final 修饰符知识点总结(必看篇)_java

final从字面上理解含义为"最后的,最终的".在Java中也同样表示出此种含义. final可以用来修饰变量(包括类属性.对象属性.局部变量和形参).方法(包括类方法和对象方法)和类. 1. final修饰类: final修饰类即表示此类已经是"最后的.最终的"含义.因此,用final修饰的类不能被继承,即不能拥有自己的子类. 如果视图对一个已经用final修饰的类进行继承,在编译期间或发生错误. 2. final修饰方法: final修饰的方法表示此方法已经是&

java变量修饰符问题,大神来回答啊

问题描述 java变量修饰符问题,大神来回答啊 如下图:为什么方法中的变量只能用final修饰? 解决方案 1.方法内没有公有的,私有:全是局部变量: 2.公有,私有成员是针对类的: 你可以这么写 public class Test{ public int c = 0; public int b = 0; private a = 0; public void fun() { //这里面全是局部变量,方法运行完就,回收了: int a1 = 1; } } 解决方案二: java中有关"变量&quo

java中修饰方法的一个泛型指定为一个类问题

问题描述 java中修饰方法的一个泛型指定为一个类问题 java中修饰方法的一个泛型指定为一个类,那么这个方法的返回类型肯定就是这个类的对象,那返回的是这个类的子类的对象可以吗? 解决方案 可以的,但是在接收到参数进行处理的时候,是需要注意的.给你举个例子: public static void main(String[] args) { int int1 = (Integer) getInt();//正确 int int2 = (Integer) getInt2();//报错 java.lan

Java访问修饰符

Java关于访问权限的关键字有三个:private.protected以及public,同时Java还有一个默认的访问权限--包权限,所以Java总共有四种访问权限控制. public和private没什么好说的,public允许在所有地方访问,而private只能在本类以及内部类中进行访问. 容易混淆的是protected和默认的访问权限,时间长了就不太容易表述两者的差别,下面通过一个例子来说明这两者的差别. 基类位于包main.access下,代码如下: package main.acces

JAVA类修饰符!!谢谢

问题描述 类(而不是类成员)的访问权限修饰词只有public和默认两种,给类设定访问权限,主要作用是为了指定类对象可创建的范围吗??(还有其他什么原因吗??)谢谢!!publicclassHelloWorld//如:这里的public,请问给类限定修饰符有什么作用??谢谢!!!{//省略} 解决方案 解决方案二: 向外提供访问的接口吧...解决方案三: 访问权限修饰词只有public和默认两种,给类设定访问权限,主要作用是为了指定类对象可创建的范围吗对就是限定范围的当java文件编译成为clas

Java 访问修饰符

问题描述 java的访问修修饰符有四种,分别是:public .protected.friendly ,private ;这四种修饰符,访问级别如下:                当前类        子类            同一个包中类     其它包中类public        √             √                  √                 √ protected   √             √                  √     

浅谈PHP正则表达式中修饰符/i, /is, /s, /isU_php技巧

在学习PHP正则表达式修饰符之前先来理解下贪婪模式,前面在元字符中提到过"?"还有一个重要的作用,即"贪婪模式",什么是"贪婪模式"呢? PHP正则表达式贪婪模式: 比如我们要匹配以字母"a"开头字母"b"结尾的字符串,但是需要匹配的字符串在"a"后面含有很多个"b",比如"a bbbbbbbbbbbbbbbbb",那正则表达式是会匹配第一个&qu

Java中对象序列化与反序列化详解_java

本文实例讲述了Java中对象序列化与反序列化.分享给大家供大家参考.具体如下: 一.简介 对象序列化(Serializable)是指将对象转换为字节序列的过程,而反序列化则是根据字节序列恢复对象的过程. 序列化一般用于以下场景: 1.永久性保存对象,保存对象的字节序列到本地文件中: 2.通过序列化对象在网络中传递对象: 3.通过序列化在进程间传递对象. 对象所属的类必须实现Serializable或是Externalizable接口才能被序列化.对实现了Serializable接口的类,其序列化

java中成员变量与局部变量区别分析_java

本文实例分析了java中成员变量与局部变量区别.分享给大家供大家参考.具体分析如下: 成员变量:在这个类里定义的私有变量,属于这个类. 创建以及使用成员变量 复制代码 代码如下: public class Person {     String name;     String Sex;     int age;     double Height;         public static void main(String arges[])     {         Person p=ne