最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java開發(fā)必備的三大修飾符

 更新時(shí)間:2021年06月02日 15:26:16   作者:北夷煙雪江中雨  
JAVA的三個(gè)修飾:static,final,abstract,在JAVA語言里無處不在,但是它們都能修飾什么組件,修飾組件的含義又有什么限制,總是混淆.所以來總結(jié)一下,需要的朋友可以參考下

一、abstract 抽象的

抽象類:被abstract 修飾的類
語法: abstract class  類名{}

抽象方法 : 被abstract 修飾的方法
定義語法:
    訪問修飾符  abstract 返回值類型 方法名(參數(shù)列表);
	abstract 訪問修飾符   返回值類型 方法名(參數(shù)列表);
特點(diǎn):
	1.當(dāng)一個(gè)類中存在抽象方法 那么這個(gè)類也必須是抽象的
	2.一個(gè)抽象類中可以有抽象方法也可以有非抽象方法
	3.如果一個(gè)類繼承了抽象類,這個(gè)類如果不想成為抽象類,那么這個(gè)類必須實(shí)現(xiàn)抽象類中的所有抽象方法
	4.抽象類不能創(chuàng)建對(duì)象,但是可以聲明引用,抽象類的對(duì)象是存在的,是由子類創(chuàng)建子類對(duì)象時(shí)調(diào)用父類構(gòu)造方法創(chuàng)建的,是無法自己手動(dòng)去new 抽象類的對(duì)象的

抽象類的好處:強(qiáng)制使用多態(tài)

案例:

public class Demo{
    public static void main(String[] args) {
           
    }
    
}


abstract class Animal{
    //抽象方法
    public abstract void eat();
    public abstract  void sleep();
    public void m1() {
        System.out.println("m1");
        
    }
}

class Dog extends Animal{
    public  void eat(){
        System.out.println("狗吃屎");
        
    }
    public  void sleep(){
        System.out.println("狗睡");
    }
}


案例:
public class Demo{
    public static void main(String[] args) {
        Animal a = new Dog();  
    }
    
}


abstract class Animal{
    public  Animal() {
        System.out.println("動(dòng)物類的構(gòu)造被調(diào)用 創(chuàng)建了 對(duì)象");
        
    }
    
    
    //抽象方法
    abstract public  void eat();
    public abstract  void sleep();
    public void m1() {
        System.out.println("m1");
        
    }
}

class Dog extends Animal{
    public  void eat(){
        System.out.println("狗吃屎");
        
    }
    public  void sleep(){
        System.out.println("狗睡");
    }
}

二、static 靜態(tài)的

static修飾成員變量:類變量 靜態(tài)變量 靜態(tài)屬性
定義語法:
	訪問修飾符  static   數(shù)據(jù)類型  變量名 = 變量值;
	static   訪問修飾符     數(shù)據(jù)類型  變量名 = 變量值;
訪問的方式(特點(diǎn))
	1.類變量可以用 類名.屬性名 訪問
	2.可以通過創(chuàng)建對(duì)象 用引用去訪問 (不推薦)

案例:
public class Demo{
    public static void main(String[] args) {
        Test t1 = new Test();
        Test t2 = new Test();

        t1.a++;
        t1.b++;

        System.out.println(t2.a);//10
        System.out.println(t2.b);//21
        
        
    }
      
}

class Test{
   int a = 10;//實(shí)例變量
   static int b = 20;//類變量
 
}

案例2:
public class Demo{
    public static void main(String[] args) {
        /*Test t1 = new Test();
        Test t2 = new Test();

        t1.a++;
        t1.b++;

        System.out.println(t2.a);
        System.out.println(t2.b);*/

        System.out.println(Test.b);//20   
    }
      
}

class Test{
   int a = 10;//實(shí)例變量
   static int b = 20;//類變量
 
}
static修飾成員方法: 靜態(tài)方法
語法:
	訪問修飾符  static  返回值類型  方法名(形參列表){
		方法的實(shí)現(xiàn);
	}
	static 訪問修飾符    返回值類型  方法名(形參列表){
		方法的實(shí)現(xiàn);
	}

特點(diǎn):
	1.靜態(tài)的方法中 不可以直接訪問非靜態(tài)的成員(成員變量 和  成員方法)
	2.如果要訪問非靜態(tài)的成員  必須創(chuàng)建對(duì)象 通過引用取訪問
	3.靜態(tài)方法可以通過 類名.方法名() 訪問  也可以通過引用去訪問(不建議)
	4.靜態(tài)的方法可以被繼承   靜態(tài)的方法不能被非靜態(tài)的方法所覆蓋 只能被靜態(tài)方法覆蓋  但是沒有多態(tài)(引用是什么類型 調(diào)用的方法就是這個(gè)類型中的方法)
	5.在靜態(tài)方法中是不可以使用 this 和 super 關(guān)鍵字  因?yàn)?this 和 super都是和對(duì)象有關(guān)的  而靜態(tài)的成員和對(duì)象無關(guān) 先于對(duì)象存在
案例:關(guān)于靜態(tài)方法 訪問非靜態(tài)的成員
public class Demo{
    public static void main(String[] args) {
        /*Test t1 = new Test();
        Test t2 = new Test();

        t1.a++;
        t1.b++;

        System.out.println(t2.a);
        System.out.println(t2.b);*/

        //System.out.println(Test.b);//20
        
        
        
    }
      
}

class Test{
    int a = 10;//實(shí)例變量
    static int b = 20;//類變量
    
    //靜態(tài)方法
    public  static void m1() {
        m2();
        //System.out.println(a);
    }
    //成員方法
    public void m2() {
        
    }
}

案例:關(guān)于 靜態(tài)方法的使用  和  通過引用去訪問非靜態(tài)的成員
public class Demo{
    public static void main(String[] args) {
        
        //Test.m1();
        Test t = new Test();
        t.m1();
        
    }
      
}

class Test{
    int a = 10;//實(shí)例變量
    static int b = 20;//類變量
    
    //靜態(tài)方法
    public  static void m1() {
        Test t = new Test();
        System.out.println(t.a);
        t.m2(); 
    }
    //成員方法
    public void m2() {
        System.out.println("m2");
    }
}

案例:關(guān)于 靜態(tài)方法被繼承
public class Demo{
    public static void main(String[] args) {
        /*Dog d = new Dog();
        d.eat();*/

        Dog.eat();
       
        
    }
      
}

//定義動(dòng)物類
class Animal{

    public static  void eat() {
        System.out.println("動(dòng)物吃");
        
    }
}

class Dog extends Animal{

    
}

案例:關(guān)于 靜態(tài)方法中是否能使用 this 和 super  
public class Demo{
    public static void main(String[] args) {
        /*Dog d = new Dog();
        d.eat();*/

        //Dog.eat();
       
        /*Animal a = new Dog();
        a.eat();*/

        Dog.eat();
    }
      
}

//定義動(dòng)物類
class Animal{
    String sex = "狗妖";
    public static  void eat() {
        System.out.println("動(dòng)物吃");
        
    }
}

class Dog extends Animal{
    
    /*static String name = "金毛";
    static int age = 3;*/
    String sex = "母";//成員變量
    public static void eat() {
        String sex = "公"; //局部變量
        System.out.println(super.sex);
        
        /*System.out.println(name);
        System.out.println(age);
        System.out.println("狗吃");*/
        
    }
    
    
    
}
初始代碼塊:定義在類中 方法外 用于在創(chuàng)建對(duì)象時(shí) 和 成員變量 按照從上向下的順序執(zhí)行初始化的操作 也叫做 動(dòng)態(tài)代碼塊
語法:
	{初始化代碼塊 }
	
案例:
public class Demo{
    public static void main(String[] args) {
        Test t = new Test();
        System.out.println(t.a);
        System.out.println(t.b);
        System.out.println(t.c);
        
    }
      
}

class Test{
    int a = 10;
    int c;
    int b;
    {//初始化屬性的
        c = 30;
        b = 20;
    }
}

static 修飾初始化代碼塊:靜態(tài)代碼塊

靜態(tài)代碼塊的作用:在類加載時(shí) 和靜態(tài)的屬性 按照順序執(zhí)行 為類進(jìn)行初始化操作
語法:
static{
        
} 

案例:
public class Demo{
    public static void main(String[] args) {
        System.out.println(Test.a);
        System.out.println(Test.b);
        
        
    }
      
}

class Test{
    static int a = 20;
    static{
        b = 40;
    }
    static int b;
    
}
注意:靜態(tài)變量 時(shí)有默認(rèn)值  先進(jìn)行賦默認(rèn)值 再初始化
==================================================================
類加載:當(dāng)jvm第一次使用一個(gè)類時(shí) 需要通過classpath 找到.class = 字節(jié)碼文件 
讀入這個(gè)類中的信息(包名  類名   屬性   方法  靜態(tài)的變量   靜態(tài)的方法 。。。)并保存在虛擬機(jī)中  類加載只進(jìn)行一次

類加載的時(shí)機(jī):
	1.創(chuàng)建對(duì)象時(shí)
	2.類名訪問靜態(tài)成員(靜態(tài)屬性  靜態(tài)方法)
	3.子類進(jìn)行類加載時(shí) 會(huì)先進(jìn)行父類的類加載
	
案例:關(guān)于 1和2 兩種情況類加載
public class Demo{
    public static void main(String[] args) {
        //1.創(chuàng)建對(duì)象
        //Test t = new Test();
        //2. 訪問靜態(tài)的成員
        System.out.println(Test.a);
        
      
        
    }
      
}

class Test{
    static int a = 20;
    static{
        System.out.println("父類 類加載了");
        
    }
}

案例:關(guān)于 3 情況的類加載
public class Demo{
    public static void main(String[] args) {
       
        //創(chuàng)建子類的對(duì)象
        //Sub s = new Sub();
        System.out.println(Sub.b); 
    }    
}

class Test{
    static int a = 20;
    static{
        System.out.println("父類 類加載了");
        
    }
}

class Sub extends Test{
    static int b = 30;
    static{
        System.out.println("子類進(jìn)行類加載了");
        
    }
}

三、final 最終的

修飾變量

局部變量:final修飾的局部變量只能賦值一次 值一旦賦值不可以改變
常量的定義:
	 public static final double PI = 3.14159265457;
案例:
public class Demo{
    public static void main(String[] args) {
        int a = 20;//局部變量
        final int b = 10; 
        a++;
        b++;
        System.out.println(a);
        System.out.println(b);
        
    }   
}

public class Demo{
    public static void main(String[] args) {
        final int a ;//聲明
        a = 10;
        a = 20;//報(bào)錯(cuò)
        System.out.println(a);
        
    }   
}

實(shí)例變量
	特點(diǎn):
	1.final修飾的實(shí)例變量沒有默認(rèn)值
	2.final修飾的實(shí)例變量只能賦值一次
	3.final修飾的實(shí)例變量可以在構(gòu)造方法中初始化 但是要保證每個(gè)構(gòu)造都必須能夠?yàn)檫@個(gè)變量初始化
案例:
public class Demo{
    public static void main(String[] args) {
        Animal a = new Animal(250);
        //System.out.println(a.a);//0
        System.out.println(a.b);
        
        
        
    }   
}

class Animal{
    /*int a = 10;//實(shí)例變量
    final int b = 20;*/

    int a;
    final int b = 20;

    public  Animal(int b) {
        this.b = b;
    }  
}

public class Demo{
    public static void main(String[] args) {
        Animal a = new Animal(250);
        //System.out.println(a.a);//0
        System.out.println(a.b);
        
        
        
    }   
}

class Animal{
    /*int a = 10;//實(shí)例變量
    final int b = 20;*/

    int a;
    final int b ;

    public  Animal(int b) {
        this.b = b;
    }

    public  Animal() {
        b = 30;
    }  
}


類變量
特點(diǎn):
	1.final修飾的類變量沒有默認(rèn)值
	2.final修飾的類變量可以通過靜態(tài)代碼塊進(jìn)行初始化
案例:
public class Demo{
    public static void main(String[] args) {
        System.out.println(Animal.a);
        System.out.println(Animal.b);
        
        
        
    }   
}

class Animal{
    static int a ;
    final static int b ;

    static{
        b = 250;
    }
    
    
}


修飾方法

成員方法:
特點(diǎn):
	1.final修飾的成員方法可以重載
	2.final修飾的成員方法不可以被覆蓋
語法:
public final void m1() {
        
}
final public  void m1() {
        
}
案例:
public class Demo{
    public static void main(String[] args) {
       
        
        
        
    }   
}

class Animal{
    
    public   void m1() {
        System.out.println("m1");
        
    }
}

class Dog extends Animal{

    public  final void m1() {
        System.out.println();
        
    }
    
    
}


靜態(tài)方法:
特點(diǎn):
	1.final修飾的靜態(tài)方法可以重載
	2.final修飾的靜態(tài)方法不可以被覆蓋
案例:
public class Demo{
    public static void main(String[] args) {
           
    }   
}

class Animal{
    
    public final static  void m1() {
        System.out.println("m1");
        
    }

    public final static void m1(int a) {
        System.out.println("m1");
        
    }
}

class Dog extends Animal{
    
    
}


修飾類

語法:
final class Animal{
}
特點(diǎn):final修飾的類沒有子類 俗稱斷子絕孫類

jdk的類庫中有哪些final修飾的類?
String  Math  System 

案例:
public class Demo{
    public static void main(String[] args) {
      	
    }   
}



class Dog extends System{
    
}

四、關(guān)于修飾符混搭的原則

class Animal{

public final static  void m1() {
    System.out.println("m1");
    
}

public final static void m1(int a) {
    System.out.println("m1");
    
}

}

class Dog extends Animal{

}

##### 修飾類

```java
語法:
final class Animal{
}
特點(diǎn):final修飾的類沒有子類 俗稱斷子絕孫類

jdk的類庫中有哪些final修飾的類?
String  Math  System 

案例:
public class Demo{
    public static void main(String[] args) {
      	
    }   
}



class Dog extends System{
    
}

五、關(guān)于修飾符混搭的原則

在這里插入圖片描述

在這里插入圖片描述

到此這篇關(guān)于Java開發(fā)必備的三大修飾符的文章就介紹到這了,更多相關(guān)Java三大修飾符內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • JavaWeb工程中集成YMP框架快速上手

    JavaWeb工程中集成YMP框架快速上手

    YMP是一個(gè)非常簡單、易用的一套輕量級(jí)JAVA應(yīng)用開發(fā)框架,設(shè)計(jì)原則主要側(cè)重于簡化工作任務(wù)、規(guī)范開發(fā)流程、提高開發(fā)效率。對(duì)YMP框架感興趣的小伙伴們可以參考一下
    2016-02-02
  • SpringCloud 如何提取公共配置

    SpringCloud 如何提取公共配置

    這篇文章主要介紹了SpringCloud 提取公共配置的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • 淺談Java list.remove( )方法需要注意的兩個(gè)坑

    淺談Java list.remove( )方法需要注意的兩個(gè)坑

    這篇文章主要介紹了淺談Java list.remove( )方法需要注意的兩個(gè)坑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Java?Base64?加密與解密示例代碼

    Java?Base64?加密與解密示例代碼

    基本的加密盡量保持簡單,加密輸入字符串沒有增加任何換行符。輸出被映射到“A-Za-z0-9+/”字符集中,解密從該字符集中解析為任意字符,這篇文章主要介紹了Java?Base64?加密與解密,需要的朋友可以參考下
    2022-12-12
  • Java中雙大括號(hào)初始化的理解與使用

    Java中雙大括號(hào)初始化的理解與使用

    最近重讀Java 編程思想,讀到有關(guān)實(shí)例化代碼塊兒的內(nèi)容,使我對(duì)于使用兩個(gè)大括號(hào)進(jìn)行初始化有了更深的理解,下面這篇文章主要給大家介紹了關(guān)于Java中雙大括號(hào)初始化的理解與使用的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • idea快速搭建springboot項(xiàng)目的操作方法

    idea快速搭建springboot項(xiàng)目的操作方法

    下面小編就為大家分享一篇idea快速搭建springboot項(xiàng)目的操作方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • Springboot整合mybatis開啟二級(jí)緩存的實(shí)現(xiàn)示例

    Springboot整合mybatis開啟二級(jí)緩存的實(shí)現(xiàn)示例

    在一級(jí)緩存中,是查詢兩次數(shù)據(jù)庫的,顯然這是一種浪費(fèi),既然SQL查詢相同,就沒有必要再次查庫了,直接利用緩存數(shù)據(jù)即可,這種思想就是MyBatis二級(jí)緩存的初衷,本文就詳細(xì)的介紹了Springboot整合mybatis開啟二級(jí)緩存,感興趣的可以了解一下
    2022-05-05
  • 簡潔實(shí)用的Java Base64編碼加密異常處理類代碼

    簡潔實(shí)用的Java Base64編碼加密異常處理類代碼

    這篇文章主要介紹了簡潔實(shí)用的Java Base64編碼加密異常處理類代碼,有一定的實(shí)用價(jià)值,需要的朋友可以參考下
    2014-07-07
  • 2020最新版idea激活教程(推薦)

    2020最新版idea激活教程(推薦)

    這篇文章主要介紹了2020最新版idea激活教程,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-02-02
  • JAVA 運(yùn)算符歸納總結(jié)

    JAVA 運(yùn)算符歸納總結(jié)

    這篇文章主要對(duì)Java語法基礎(chǔ)之運(yùn)算符進(jìn)行了詳細(xì)的歸納總結(jié),需要的朋友可以參考
    2017-04-04

最新評(píng)論

象山县| 栾川县| 长岭县| 股票| 西昌市| 沂水县| 石屏县| 屏山县| 沙田区| 灌云县| 措美县| 泰和县| 眉山市| 盐源县| 淅川县| 宝应县| 漳浦县| 四子王旗| 上栗县| 开平市| 北辰区| 读书| 特克斯县| 平潭县| 乌拉特中旗| 长兴县| 于田县| 贺兰县| 临颍县| 吐鲁番市| 康乐县| 璧山县| 舟曲县| 阿城市| 屏南县| 闽侯县| 广宁县| 桃园县| 博兴县| 顺义区| 张掖市|