我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Java开发必备的三大修饰符

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Java开发必备的三大修饰符

一、abstract 抽象的


抽象类:被abstract 修饰的类
语法: abstract class  类名{}

抽象方法 : 被abstract 修饰的方法
定义语法:
    访问修饰符  abstract 返回值类型 方法名(参数列表);
	abstract 访问修饰符   返回值类型 方法名(参数列表);
特点:
	1.当一个类中存在抽象方法 那么这个类也必须是抽象的
	2.一个抽象类中可以有抽象方法也可以有非抽象方法
	3.如果一个类继承了抽象类,这个类如果不想成为抽象类,那么这个类必须实现抽象类中的所有抽象方法
	4.抽象类不能创建对象,但是可以声明引用,抽象类的对象是存在的,是由子类创建子类对象时调用父类构造方法创建的,是无法自己手动去new 抽象类的对象的

抽象类的好处:强制使用多态

案例:

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("动物类的构造被调用 创建了 对象");
        
    }
    
    
    //抽象方法
    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 静态的


static修饰成员变量:类变量 静态变量 静态属性
定义语法:
	访问修饰符  static   数据类型  变量名 = 变量值;
	static   访问修饰符     数据类型  变量名 = 变量值;
访问的方式(特点)
	1.类变量可以用 类名.属性名 访问
	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);//10
        System.out.println(t2.b);//21
        
        
    }
      
}

class Test{
   int a = 10;//实例变量
   static int b = 20;//类变量
 
}

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

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

class Test{
   int a = 10;//实例变量
   static int b = 20;//类变量
 
}

static修饰成员方法: 静态方法
语法:
	访问修饰符  static  返回值类型  方法名(形参列表){
		方法的实现;
	}
	static 访问修饰符    返回值类型  方法名(形参列表){
		方法的实现;
	}

特点:
	1.静态的方法中 不可以直接访问非静态的成员(成员变量 和  成员方法)
	2.如果要访问非静态的成员  必须创建对象 通过引用取访问
	3.静态方法可以通过 类名.方法名() 访问  也可以通过引用去访问(不建议)
	4.静态的方法可以被继承   静态的方法不能被非静态的方法所覆盖 只能被静态方法覆盖  但是没有多态(引用是什么类型 调用的方法就是这个类型中的方法)
	5.在静态方法中是不可以使用 this 和 super 关键字  因为 this 和 super都是和对象有关的  而静态的成员和对象无关 先于对象存在
案例:关于静态方法 访问非静态的成员
public class Demo{
    public static void main(String[] args) {
        

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

class Test{
    int a = 10;//实例变量
    static int b = 20;//类变量
    
    //静态方法
    public  static void m1() {
        m2();
        //System.out.println(a);
    }
    //成员方法
    public void m2() {
        
    }
}

案例:关于 静态方法的使用  和  通过引用去访问非静态的成员
public class Demo{
    public static void main(String[] args) {
        
        //Test.m1();
        Test t = new Test();
        t.m1();
        
    }
      
}

class Test{
    int a = 10;//实例变量
    static int b = 20;//类变量
    
    //静态方法
    public  static void m1() {
        Test t = new Test();
        System.out.println(t.a);
        t.m2(); 
    }
    //成员方法
    public void m2() {
        System.out.println("m2");
    }
}

案例:关于 静态方法被继承
public class Demo{
    public static void main(String[] args) {
        

        Dog.eat();
       
        
    }
      
}

//定义动物类
class Animal{

    public static  void eat() {
        System.out.println("动物吃");
        
    }
}

class Dog extends Animal{

    
}

案例:关于 静态方法中是否能使用 this 和 super  
public class Demo{
    public static void main(String[] args) {
        

        //Dog.eat();
       
        

        Dog.eat();
    }
      
}

//定义动物类
class Animal{
    String sex = "狗妖";
    public static  void eat() {
        System.out.println("动物吃");
        
    }
}

class Dog extends Animal{
    
    
    String sex = "母";//成员变量
    public static void eat() {
        String sex = "公"; //局部变量
        System.out.println(super.sex);
        
        
        
    }
    
    
    
}

初始代码块:定义在类中 方法外 用于在创建对象时 和 成员变量 按照从上向下的顺序执行初始化的操作 也叫做 动态代码块
语法:
	{初始化代码块 }
	
案例:
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 修饰初始化代码块:静态代码块

静态代码块的作用:在类加载时 和静态的属性 按照顺序执行 为类进行初始化操作
语法:
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;
    
}
注意:静态变量 时有默认值  先进行赋默认值 再初始化
==================================================================
类加载:当jvm第一次使用一个类时 需要通过classpath 找到.class = 字节码文件 
读入这个类中的信息(包名  类名   属性   方法  静态的变量   静态的方法 。。。)并保存在虚拟机中  类加载只进行一次

类加载的时机:
	1.创建对象时
	2.类名访问静态成员(静态属性  静态方法)
	3.子类进行类加载时 会先进行父类的类加载
	
案例:关于 1和2 两种情况类加载
public class Demo{
    public static void main(String[] args) {
        //1.创建对象
        //Test t = new Test();
        //2. 访问静态的成员
        System.out.println(Test.a);
        
      
        
    }
      
}

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

案例:关于 3 情况的类加载
public class Demo{
    public static void main(String[] args) {
       
        //创建子类的对象
        //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("子类进行类加载了");
        
    }
}

三、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;//报错
        System.out.println(a);
        
    }   
}

实例变量
	特点:
	1.final修饰的实例变量没有默认值
	2.final修饰的实例变量只能赋值一次
	3.final修饰的实例变量可以在构造方法中初始化 但是要保证每个构造都必须能够为这个变量初始化
案例:
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;
    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;
    final int b ;

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

    public  Animal() {
        b = 30;
    }  
}


类变量
特点:
	1.final修饰的类变量没有默认值
	2.final修饰的类变量可以通过静态代码块进行初始化
案例:
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;
    }
    
    
}


修饰方法


成员方法:
特点:
	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();
        
    }
    
    
}


静态方法:
特点:
	1.final修饰的静态方法可以重载
	2.final修饰的静态方法不可以被覆盖
案例:
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{
}
特点:final修饰的类没有子类 俗称断子绝孙类

jdk的类库中有哪些final修饰的类?
String  Math  System 

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



class Dog extends System{
    
}

四、关于修饰符混搭的原则

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{
}
特点:final修饰的类没有子类 俗称断子绝孙类

jdk的类库中有哪些final修饰的类?
String  Math  System 

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



class Dog extends System{
    
}

五、关于修饰符混搭的原则

在这里插入图片描述

在这里插入图片描述

到此这篇关于Java开发必备的三大修饰符的文章就介绍到这了,更多相关Java三大修饰符内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Java开发必备的三大修饰符

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

web开发中网站制作必备的三大要素是什么

这篇文章主要为大家展示了“web开发中网站制作必备的三大要素是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“web开发中网站制作必备的三大要素是什么”这篇文章吧。现在社会是一个信息化社会,网
2023-06-12

Java开发者必备10大数据工具和框架

当今IT开发人员面对的最大挑战就是复杂性,硬件越来越复杂,OS越来越复杂,编程语言和API越来越复杂,我们构建的应用也越来越复杂。根据外媒的一项调查报告,中软卓越专家列出了Java程序员在过去12个月内一直使用的一些工具或框架,或许会对你有
2023-05-31

Linux开发的五大必备工具是什么

本篇内容介绍了“Linux开发的五大必备工具是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!容器放眼于现实,现在已经是容器的时代了。容器
2023-06-16

Linux开发的五大必备工具分别是什么

这篇文章跟大家分析一下“Linux开发的五大必备工具分别是什么”。内容详细易懂,对“Linux开发的五大必备工具分别是什么”感兴趣的朋友可以跟着小编的思路慢慢深入来阅读一下,希望阅读后能够对大家有所帮助。下面跟着小编一起深入学习“Linux
2023-06-28

Serverless Framework 大揭秘:Node.js 开发人员必备的神器

Serverless Framework 是一款强大的工具,可以让 Node.js 开发人员轻松构建、部署和管理无服务器应用程序。它消除了基础设施维护的麻烦,让开发人员专注于编写代码。本文将深入探讨 Serverless Framework 的特性、优势,并提供使用它的逐步指南。
Serverless Framework 大揭秘:Node.js 开发人员必备的神器
2024-03-02

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录