枚舉java語(yǔ)言中的修飾符組合的實(shí)例代碼
枚舉java語(yǔ)言中的修飾符組合,代碼如下所示:
package model;
/*22:37 2019/7/20*/
/*
top class的修飾符組合
abstract final public
* 2 * 2
warning:
abstract final 沖突
最終,共有2*(2*2-1)=6種修飾符組合用于top class
*/
/*
public abstract class PublicAbstractClass{}
public final class PublicFinalClass{}
abstract class AbstractClass{}
final class FinalClass{}
public class PublicClass{}
class Class{}
關(guān)于constructor的修飾符組合
abstract [DEFAULT] protected public
關(guān)于field的修飾符組合
* 2 * 2 * 2 * 2
權(quán)限 靜態(tài)的 瞬態(tài)的 同步的
private 缺省 缺省 缺省 缺省
缺省 (not final) (not static) (not transient) (not volatile)
protected
public final static transient volatile
warning:
volatile final 沖突
最終,共有4*2*2*(2*2-1)=48種修飾符組合用于field
關(guān)于method的修飾符組合
* 2 * 2 * 2 * 2 * 2
權(quán)限 靜態(tài)的 同步的 本地的
private 缺省 缺省 缺省 缺省 缺省
缺省 (not abstract) (not final) (not static) (not synchronized) (not native)
protected
public abstract final static synchronized native
warning:
abstract 和 private 沖突
abstract 和 final 沖突
abstract 和 synchronized 沖突
abstract 和 static 沖突
abstract 和 native 沖突
所以abstract method 的修飾符組合只有三種:
abstract
protected abstract
public abstract
最終,共有4*2*2*2*2+3=67中修飾符組合用于method
*/
/**
* 這個(gè)類列舉了所有的用于字段的修飾符組合
* ├構(gòu)造器的修飾符組合
* └方法的修飾符組合
* @author zhangxingshuo
*/
abstract class A {
/*fields*/
/*transient and volatile*/
private transient volatile int privateTransientVolatileIntMemberField;
transient volatile int transientVolatileIntMemberField;
protected transient volatile int protectedTransientVolatileIntMemberField;
public transient volatile int publicTransientVolatileIntMemberField;
// private final transient volatile int privateFinalTransientVolatileIntMemberField=0;
// final transient volatile int finalTransientVolatileIntMemberField=0;
// protected final transient volatile int protectedFinalTransientVolatileIntMemberField=0;
// public final transient volatile int publicFinalTransientVolatileIntMemberField=0;
private static transient volatile int privateStaticTransientVolatileIntMemberField;
static transient volatile int staticTransientVolatileIntMemberField;
protected static transient volatile int protectedStaticTransientVolatileIntMemberField;
public static transient volatile int publicStaticTransientVolatileIntMemberField;
// private final static transient volatile int privateFinalStaticTransientVolatileIntMemberField=0;
// final static transient volatile int finalStaticTransientVolatileIntMemberField=0;
// protected final static transient volatile int protectedFinalStaticTransientVolatileIntMemberField=0;
// public final static transient volatile int publicFinalStaticTransientVolatileIntMemberField=0;
/*not transient and volatile*/
private volatile int privateVolatileIntMemberField;
volatile int VolatileIntMemberField;
protected volatile int protectedVolatileIntMemberField;
public volatile int publicVolatileIntMemberField;
// private final volatile int privateFinalVolatileIntMemberField=0;
// final volatile int finalVolatileIntMemberField=0;
// protected final volatile int protectedFinalVolatileIntMemberField=0;
// public final volatile int publicFinalVolatileIntMemberField=0;
private static volatile int privateStaticVolatileIntMemberField;
static volatile int staticVolatileIntMemberField;
protected static volatile int protectedStaticVolatileIntMemberField;
public static volatile int publicStaticVolatileIntMemberField;
// private final static volatile int privateFinalStaticVolatileIntMemberField=0;
// final static volatile int finalStaticVolatileIntMemberField=0;
// protected final static volatile int protectedFinalStaticVolatileIntMemberField=0;
// public final static volatile int publicFinalStaticVolatileIntMemberField=0;
/*transient and not volatile*/
private transient int privateTransientIntMemberField;
transient int transientIntMemberField;
protected transient int protectedTransientIntMemberField;
public transient int publicTransientIntMemberField;
private final transient int privateFinalTransientIntMemberField=0;
final transient int finalTransientIntMemberField=0;
protected final transient int protectedFinalTransientIntMemberField=0;
public final transient int publicFinalTransientIntMemberField=0;
private static transient int privateStaticTransientIntMemberField;
static transient int staticTransientIntMemberField;
protected static transient int protectedStaticTransientIntMemberField;
public static transient int publicStaticTransientIntMemberField;
private final static transient int privateFinalStaticTransientIntMemberField=0;
final static transient int finalStaticTransientIntMemberField=0;
protected final static transient int protectedFinalStaticTransientIntMemberField=0;
public final static transient int publicFinalStaticTransientIntMemberField=0;
/*not transient and not volatile*/
private int privateIntMemberField;
int intMemberField;
protected int protectedIntMemberField;
public int publicIntMemberField;
private final int privateFinalIntMemberField=0;
final int finalIntMemberField=0;
protected final int protectedFinalIntMemberField=0;
public final int publicFinalIntMemberField=0;
private static int privateStaticIntMemberField;
static int staticIntMemberField;
protected static int protectedStaticIntMemberField;
public static int publicStaticIntMemberField;
private final static int privateFinalStaticIntMemberField=0;
final static int finalStaticIntMemberField=0;
protected final static int protectedFinalStaticIntMemberField=0;
public final static int publicFinalStaticIntMemberField=0;
/*constructors*/
private A( ){}
A(int i ){}
protected A(int i,int j ){}
public A(int i,int j,int k){}
/*methods*/
private final static synchronized native void privateFinalStaticSynchronizedNativeVoidMethod();
final static synchronized native void finalStaticSynchronizedNativeVoidMethod();
protected final static synchronized native void protectedFinalStaticSynchronizedNativeVoidMethod();
public final static synchronized native void publicFinalStaticSynchronizedNativeVoidMethod();
private static synchronized native void privateStaticSynchronizedNativeVoidMethod();
static synchronized native void staticSynchronizedNativeVoidMethod();
protected static synchronized native void protectedStaticSynchronizedNativeVoidMethod();
public static synchronized native void publicStaticSynchronizedNativeVoidMethod();
private final synchronized native void privateFinalSynchronizedNativeVoidMethod();
final synchronized native void finalSynchronizedNativeVoidMethod();
protected final synchronized native void protectedFinalSynchronizedNativeVoidMethod();
public final synchronized native void publicFinalSynchronizedNativeVoidMethod();
private synchronized native void privateSynchronizedNativeVoidMethod();
synchronized native void synchronizedNativeVoidMethod();
protected synchronized native void protectedSynchronizedNativeVoidMethod();
public synchronized native void publicSynchronizedNativeVoidMethod();
private final static native void privateFinalStaticNativeVoidMethod();
final static native void finalStaticNativeVoidMethod();
protected final static native void protectedFinalStaticNativeVoidMethod();
public final static native void publicFinalStaticNativeVoidMethod();
private static native void privateStaticNativeVoidMethod();
static native void staticNativeVoidMethod();
protected static native void protectedStaticNativeVoidMethod();
public static native void publicStaticNativeVoidMethod();
private final native void privateFinalNativeVoidMethod();
final native void finalNativeVoidMethod();
protected final native void protectedFinalNativeVoidMethod();
public final native void publicFinalNativeVoidMethod();
private native void privateNativeVoidMethod();
native void nativeVoidMethod();
protected native void protectedNativeVoidMethod();
public native void publicNativeVoidMethod();
private final static synchronized void privateFinalStaticSynchronizedVoidMethod(){};
final static synchronized void finalStaticSynchronizedVoidMethod(){};
protected final static synchronized void protectedFinalStaticSynchronizedVoidMethod(){};
public final static synchronized void publicFinalStaticSynchronizedVoidMethod(){};
private static synchronized void privateStaticSynchronizedVoidMethod(){};
static synchronized void staticSynchronizedVoidMethod(){};
protected static synchronized void protectedStaticSynchronizedVoidMethod(){};
public static synchronized void publicStaticSynchronizedVoidMethod(){};
private final synchronized void privateFinalSynchronizedVoidMethod(){};
final synchronized void finalSynchronizedVoidMethod(){};
protected final synchronized void protectedFinalSynchronizedVoidMethod(){};
public final synchronized void publicFinalSynchronizedVoidMethod(){};
private synchronized void privateSynchronizedVoidMethod(){};
synchronized void synchronizedVoidMethod(){};
protected synchronized void protectedSynchronizedVoidMethod(){};
public synchronized void publicSynchronizedVoidMethod(){};
private final static void privateFinalStaticVoidMethod(){};
final static void finalStaticVoidMethod(){};
protected final static void protectedFinalStaticVoidMethod(){};
public final static void publicFinalStaticVoidMethod(){};
private static void privateStaticVoidMethod(){};
static void staticVoidMethod(){};
protected static void protectedStaticVoidMethod(){};
public static void publicStaticVoidMethod(){};
private final void privateFinalVoidMethod(){};
final void finalVoidMethod(){};
protected final void protectedFinalVoidMethod(){};
public final void publicFinalVoidMethod(){};
private void privateVoidMethod(){};
void voidMethod(){};
protected void protectedVoidMethod(){};
public void publicVoidMethod(){};
// private abstract final static synchronized native void privateAbstractFinalStaticSynchronizedNativeVoidMethod(){};
// abstract final static synchronized native void abstractFinalStaticSynchronizedNativeVoidMethod(){};
// protected abstract final static synchronized native void protectedAbstractFinalStaticSynchronizedNativeVoidMethod(){};
// public abstract final static synchronized native void publicAbstractFinalStaticSynchronizedNativeVoidMethod(){};
// private abstract static synchronized native void privateAbstractStaticSynchronizedNativeVoidMethod();
// abstract static synchronized native void abstractStaticSynchronizedNativeVoidMethod();
// protected abstract static synchronized native void protectedAbstractStaticSynchronizedNativeVoidMethod();
// public abstract static synchronized native void publicAbstractStaticSynchronizedNativeVoidMethod();
// private abstract final synchronized native void privateAbstractFinalSynchronizedNativeVoidMethod(){};
// abstract final synchronized native void abstractFinalSynchronizedNativeVoidMethod(){};
// protected abstract final synchronized native void protectedAbstractFinalSynchronizedNativeVoidMethod(){};
// public abstract final synchronized native void publicAbstractFinalSynchronizedNativeVoidMethod(){};
// private abstract synchronized native void privateAbstractSynchronizedNativeVoidMethod(){};
// abstract synchronized native void abstractSynchronizedNativeVoidMethod(){};
// protected abstract synchronized native void protectedAbstractSynchronizedNativeVoidMethod(){};
// public abstract synchronized native void publicAbstractSynchronizedNativeVoidMethod(){};
// private abstract final static native void privateAbstractFinalStaticNativeVoidMethod(){};
// abstract final static native void abstractFinalStaticNativeVoidMethod(){};
// protected abstract final static native void protectedAbstractFinalStaticNativeVoidMethod(){};
// public abstract final static native void publicAbstractFinalStaticNativeVoidMethod(){};
// private abstract static native void privateAbstractStaticNativeVoidMethod(){};
// abstract static native void abstractStaticNativeVoidMethod(){};
// protected abstract static native void protectedAbstractStaticNativeVoidMethod(){};
// public abstract static native void publicAbstractStaticNativeVoidMethod(){};
// private abstract final native void privateAbstractFinalNativeVoidMethod(){};
// abstract final native void abstractFinalNativeVoidMethod(){};
// protected abstract final native void protectedAbstractFinalNativeVoidMethod(){};
// public abstract final native void publicAbstractFinalNativeVoidMethod(){};
// private abstract native void privateAbstractNativeVoidMethod();
// abstract native void abstractNativeVoidMethod();
// protected abstract native void protectedAbstractNativeVoidMethod();
// public abstract native void publicAbstractNativeVoidMethod();
// private abstract final static synchronized void privateAbstractFinalStaticSynchronizedVoidMethod();
// abstract final static synchronized void abstractFinalStaticSynchronizedVoidMethod();
// protected abstract final static synchronized void protectedAbstractFinalStaticSynchronizedVoidMethod();
// public abstract final static synchronized void publicAbstractFinalStaticSynchronizedVoidMethod();
// private abstract static synchronized void privateAbstractStaticSynchronizedVoidMethod();
// abstract static synchronized void abstractStaticSynchronizedVoidMethod();
// protected abstract static synchronized void protectedAbstractStaticSynchronizedVoidMethod();
// public abstract static synchronized void publicAbstractStaticSynchronizedVoidMethod();
// private abstract final synchronized void privateAbstractFinalSynchronizedVoidMethod(){};
// abstract final synchronized void abstractFinalSynchronizedVoidMethod(){};
// protected abstract final synchronized void protectedAbstractFinalSynchronizedVoidMethod(){};
// public abstract final synchronized void publicAbstractFinalSynchronizedVoidMethod(){};
// private abstract synchronized void privateAbstractSynchronizedVoidMethod();
// abstract synchronized void abstractSynchronizedVoidMethod();
// protected abstract synchronized void protectedAbstractSynchronizedVoidMethod();
// public abstract synchronized void publicAbstractSynchronizedVoidMethod();
// private abstract final static void privateAbstractFinalStaticVoidMethod;
// abstract final static void abstractFinalStaticVoidMethod;
// protected abstract final static void protectedAbstractFinalStaticVoidMethod;
// public abstract final static void publicAbstractFinalStaticVoidMethod;
// private abstract static void privateAbstractStaticVoidMethod();
// abstract static void abstractStaticVoidMethod();
// protected abstract static void protectedAbstractStaticVoidMethod();
// public abstract static void publicAbstractStaticVoidMethod();
// private abstract final void privateAbstractFinalVoidMethod();
// abstract final void abstractFinalVoidMethod();
// protected abstract final void protectedAbstractFinalVoidMethod();
// public abstract final void publicAbstractFinalVoidMethod();
// private abstract void privateAbstractVoidMethod();
abstract void abstractVoidMethod();
protected abstract void protectedAbstractVoidMethod();
public abstract void publicAbstractVoidMethod();
}
ps:Java 修飾符
Java語(yǔ)言提供了很多修飾符,主要分為以下兩類:
- 訪問(wèn)修飾符
- 非訪問(wèn)修飾符
修飾符用來(lái)定義類、方法或者變量,通常放在語(yǔ)句的最前端。我們通過(guò)下面的例子來(lái)說(shuō)明:
public class className {
// ...
}
private boolean myFlag;
static final double weeks = 9.5;
protected static final int BOXWIDTH = 42;
public static void main(String[] arguments) {
// 方法體
}
訪問(wèn)控制修飾符
Java中,可以使用訪問(wèn)控制符來(lái)保護(hù)對(duì)類、變量、方法和構(gòu)造方法的訪問(wèn)。Java 支持 4 種不同的訪問(wèn)權(quán)限。
- default (即缺省,什么也不寫(xiě)): 在同一包內(nèi)可見(jiàn),不使用任何修飾符。使用對(duì)象:類、接口、變量、方法。
- private : 在同一類內(nèi)可見(jiàn)。使用對(duì)象:變量、方法。 注意:不能修飾類(外部類)
- public : 對(duì)所有類可見(jiàn)。使用對(duì)象:類、接口、變量、方法
- protected : 對(duì)同一包內(nèi)的類和所有子類可見(jiàn)。使用對(duì)象:變量、方法。 注意:不能修飾類(外部類)。
總結(jié)
以上所述是小編給大家介紹的枚舉java語(yǔ)言中的修飾符組合的實(shí)例代碼,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)歡迎給我留言,小編會(huì)及時(shí)回復(fù)大家的!
相關(guān)文章
Java多線程中的Exchanger應(yīng)用簡(jiǎn)析
這篇文章主要介紹了Java多線程中的Exchanger應(yīng)用簡(jiǎn)析,Exchanger提供了一個(gè)同步點(diǎn)exchange方法,兩個(gè)線程調(diào)用exchange方法時(shí),無(wú)論調(diào)用時(shí)間先后,兩個(gè)線程會(huì)互相等到線程到達(dá)exchange方法調(diào)用點(diǎn),此時(shí)兩個(gè)線程可以交換數(shù)據(jù),將本線程產(chǎn)出數(shù)據(jù)傳遞給對(duì)方,需要的朋友可以參考下2023-12-12
java動(dòng)態(tài)導(dǎo)出excel壓縮成zip下載的方法
這篇文章主要為大家詳細(xì)介紹了java動(dòng)態(tài)導(dǎo)出excel壓縮成zip下載的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07
RabbitMQ中的死信隊(duì)列(Dead Letter Exchanges)詳解
這篇文章主要介紹了RabbitMQ中的死信隊(duì)列(Dead Letter Exchanges)詳解,當(dāng)RabbitMQ出現(xiàn)死信,可能會(huì)導(dǎo)致業(yè)務(wù)邏輯錯(cuò)誤,比如下訂單后修改庫(kù)存操作,在下單后因?yàn)槟撤N原因,發(fā)送的消息未被簽收,這時(shí)庫(kù)存數(shù)據(jù)會(huì)出現(xiàn)不一致,需要的朋友可以參考下2023-12-12
java連接Oracle數(shù)據(jù)庫(kù)的方法解析
本文主要對(duì)java連接Oracle數(shù)據(jù)庫(kù)方法進(jìn)行步驟解析,具有很好的參考價(jià)值,需要的朋友一起來(lái)看下吧2016-12-12
SpringCloud Alibaba使用Seata處理分布式事務(wù)的技巧
在傳統(tǒng)的單體項(xiàng)目中,我們使用@Transactional注解就能實(shí)現(xiàn)基本的ACID事務(wù)了,隨著微服務(wù)架構(gòu)的引入,需要對(duì)數(shù)據(jù)庫(kù)進(jìn)行分庫(kù)分表,每個(gè)服務(wù)擁有自己的數(shù)據(jù)庫(kù),這樣傳統(tǒng)的事務(wù)就不起作用了,那么我們?nèi)绾伪WC多個(gè)服務(wù)中數(shù)據(jù)的一致性呢?跟隨小編一起通過(guò)本文了解下吧2021-06-06
詳談fastjson將對(duì)象格式化成json時(shí)的兩個(gè)問(wèn)題
下面小編就為大家?guī)?lái)一篇詳談fastjson將對(duì)象格式化成json時(shí)的兩個(gè)問(wèn)題。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-05-05
Java實(shí)現(xiàn)LeetCode(54.螺旋矩陣)
這篇文章主要介紹了Java實(shí)現(xiàn)LeetCode(螺旋矩陣),本文列出題目和寫(xiě)題的思路。給出完整的解法代碼,需要的朋友可以參考下2021-06-06
java觀察者模式的三種實(shí)現(xiàn)方式代碼實(shí)例
這篇文章主要介紹了java觀察者模式的三種實(shí)現(xiàn)方式代碼實(shí)例,觀察者模式(又被稱為發(fā)布-訂閱(Publish/Subscribe)模式,屬于行為型模式的一種,它定義了一種一對(duì)多的依賴關(guān)系,讓多個(gè)觀察者對(duì)象同時(shí)監(jiān)聽(tīng)某一個(gè)主題對(duì)象,需要的朋友可以參考下2023-10-10
springboot 整合EhCache實(shí)現(xiàn)單服務(wù)緩存的操作方法
這篇文章主要介紹了springboot 整合EhCache實(shí)現(xiàn)單服務(wù)緩存的操作方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07

