`
jgnan
  • 浏览: 89173 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

每天简单JAVA教学:Modifier

阅读更多
昨天给大家介绍了怎么进行同一个类里面的方法调用,今天将会给大家说一下modifier以及不同类之间怎么进行方法调用。

首先来说一下modifier。它有四个值:public,private,default,protected.其中,当你不声明modifier的时候默认就为default。所以default不需要写出来。而且关键字default实际上也不是modifier,而是用于指示Annotation的默认值(感觉怪怪的。。)。

这个modifier其实是用于指示一个类的成员的访问策略。就是指示一个类的某个方法,或者字段,更或者是成员类是否可以被外部哪些成员类访问。来看下表:
名称策略
public可以供所有其它类访问
private只能供同一类内部访问
default可以被同一个package下面的其它类访问
protected只可以被自己及子类成员访问


为了弄明白怎么回事,我们需要做个稍微复杂一点的实验,首先大家创建以下的类:


然后,Modifier.java里面的代码如下:
package modifier;

public class Modifier {
    /**
     * 公共方法可以供所有其它类访问
      */
    public void publicMethod(){
        System.out.println("Everybody can visit me.");
    }
	
    /**
     * 默认访问类型方法,可供同一个package的类访问
     */
    void defaultMethod(){
        System.out.println("Default method");
    }
	
    /**
     * 受限类型方法,可以供自己或子类访问
     */
    protected void protectedMethod(){
        System.out.println("Hello my child!");
    }
	
    /*
     * 私有类型方法,只能被内部调用
      */
    private void privateMethod()
    {
        System.out.println("I'm a selfish guy:p");
    }
}


Neighbour代码:
package modifier;

public class Neighbour {
    public void visitDefault(){
        new Modifier().defaultMethod();
    }
}


ChildClass代码:
package modifier.child;

import modifier.Modifier;

public class ChildClass extends Modifier {
    public void visitProtected(){
        protectedMethod();
    }
}


Foreigner代码:
package modifier.child;

import modifier.Modifier;

public class Foreigner {
    public void visitPublic()
    {
         new Modifier().publicMethod();
    }
}


除了以上的代码外,大家还可以自己做以下实验:
[list=1]
  • 在任何类里面通过new Modifier().publicMethod()来访问公共方法
  • 在任何类里面通过new Modifier().protectedMethod()来访问受限方法
  • 在任何类里面通过new Modifier().defaultMethod()来访问默认方法
  • 在任何类里面通过new Modifier().privateMethod()来访问私有方法
  • [/list]
    除了第一点会在所有类中都成功之外,其它的几条在上面几个类的实验中应该都只会在某个类中会成功。

    几个类的意义:
    类名代表意义
    ModifierModifier测试类
    NeighbourModifier的邻居类,和Modifier同处于一个package层级下。
    ChildClassModifier的继承类,继承了Modifier除了标有private和default以外的所有成员
    Foreigner跟Modifier没有任何关系的外类


    好了,在我们结束今天的内容之前,大约预习以下后面的内容:
    在例子里面,我们需要通过new Modifier()来访问Modifier类里面的东西,为什么呢?因为要访问一个类里面非静态(static)的成员,只有在把这个类的实例(instance)创建出来,分配了实际的地址段给它之后,它的成员才有对应的地址段可供访问。这就好比类是一个房子的设计蓝图,上面描述了房子的方方面面,面积啦,房间布局啦等等。但是如果房子一天没起,这些东西都不会具体话,也没办法住人。

    而new Modifier()就好像起房子一样。当然,明天我们说静态方法和恒定方法的时候,会再介绍另一种方法调用的方式。

    另外,关于继承。如果我们的一个类需要有某个类的大部分特点的时候,比如要写一个Apple类,而在此之前已经有一个叫Fruit的类了,而且Apple类含有Fruit的所有特征及一些自己特有的特征。那么在解决这类问题的时候就会用到继承的概念。方法很简单,就是在你的类名后面,使用extends关键字把父类和子类联系起来:
    public class Child extends Parent
    


    好了,今天就到此为止,谢谢大家观看。
    • 大小: 3.2 KB
    分享到:
    评论
    发表评论

    文章已被作者锁定,不允许评论。

    相关推荐

      Ajax Modifier-1.5.3.zip

      名称:Ajax Modifier -------------------- 版本:1.5.3 作者:ygyooo 分类:其他 -------------------- 概述:此扩展仅覆盖 XMLHTTPRequest 对象中的响应数据以及 fetch 方法。 描述: .建议在不使用时关闭此扩展...

      【IT十八掌徐培成】Java基础第25天-02.declaredMethod-method-Modifier.zip

      今天我们将深入探讨"Declared Methods"(声明的方法)、"Method"(方法)以及"Modifier"(修饰符)这三个概念,这些都是Java编程中的基础知识,对于理解和编写高质量的代码至关重要。 首先,我们来理解"Declared ...

      geohash-java:Geohash的Java实现

      Modifier and Type Method and Description String toGeoHash(double lng, double lat) 根据经纬度计算 geohash String toGeoHash(double lng, double lat, int level) 根据经纬度转换为指定长度的 geohash GPS ...

      3DMax完美倒角插件:Quad Chamfer Modifier For 9-2019.rar

      标题中的“3DMax完美倒角插件:Quad Chamfer Modifier For 9-2019.rar”指的是一款专为3D Max设计的插件,名为“Quad Chamfer Modifier”,适用于3D Max 2019版本。这款插件主要用于提高三维建模中的倒角效果,帮助...

      java编程题典型例题

      Java 编程题典型例题 Java 是一种广泛使用的编程语言,它具有平台独立性、面向对象、分布式等特点。下面我们将通过四个典型例题来展示 ...3. Access modifier:Java 中的访问控制权限,用于实现字段和方法的访问控制。

      access-modifier-checker-1.0-sources.jar

      官方版本,亲测可用

      Android代码生成技术JavaPoet的使用

      implementation 'com.squareup:javapoet:1.13.0' } ``` 2. 创建类:接下来,我们可以使用JavaPoet API来创建类、方法、字段等。例如,生成一个简单的Java类: ```java TypeSpec helloWorldClass = TypeSpec.class...

      Java Heap Size Modifier:增加/减少Java堆大小的工具-开源

      它是用于增加/减少所选 Java 文件 (.jar) 的 Java 堆大小的工具。 对于某些 Java 应用程序,默认的 Java 堆大小是不够的; 使用此工具,您可以轻松地临时增加一个文件的堆大小。 仅适用于 Windows。

      onnx-modifier

      这便是onnx-modifier (github)开发的动机。所有的编辑信息将最终汇总,统一送由ONNX Python API处理,得到编辑后的ONNX模型文件。 目前已支持下列操作: 1、删除/恢复节点 2、增加新节点 3、修改节点输入输出名 4、...

      Quad Chamfer Modifier 1.16

      The Quad Chamfer modifier produces all quad chamfers, unlike the normal 3ds Max chamfer which produces a lot of triangles and ngons. It is the successor of the Quad Chamfer maxscript, improving on by...

      BDMV Modifier 2.0

      【BDMV Modifier 2.0】是一款专为OPPO蓝光播放机设计的软件工具,主要用于修改蓝光原盘文件的播放目录结构。在深入理解这个工具之前,我们需要先了解一些基本概念。 蓝光(Blu-ray)是一种高密度的光盘存储格式,...

      File Modifier 1.0(exe可执行文件编辑器)

      File Modifier是一个多功能的EXE文件编辑器。 File Modifier功能:随意提取exe文件图标(与原始图标一致) 克隆任意exe文件图标 克隆任意exe文件版本信息 为exe文件添加区段、设置区段大小 为exe文件修改特征 ...

      MP3 Quality Modifier v2.51.zip

      MP3 Quality Modifier是一款专为音频爱好者设计的工具,主要用于调整MP3文件的比特率,以适应不同的播放设备或个人对音质的需求。该软件的版本是v2.51,包含在名为"MP3 Quality Modifier v2.51.zip"的压缩包文件中。...

      java的一本好教材

      3. **访问控制修饰符(Access modifier)**:Java中的访问控制修饰符有public、private、protected和默认(无修饰符)。它们用于控制类、方法和变量的可访问性,以实现封装。 4. **匿名类(Anonymous class)**:...

      详解java.lang.reflect.Modifier.isInterface()方法

      在Java编程语言中,`java.lang.reflect.Modifier`类是一个非常重要的工具,它提供了一系列静态方法来查询关于类、接口、字段和方法的修饰符信息。`Modifier.isInterface(int mod)`方法是其中一个方法,用于判断给定...

      java必记单词

      ### Java 必记单词解析 #### AbstractWindowToolkit (AWT) 抽象窗口工具包 - **定义**:AWT 是 Java 提供的一组用于创建图形用户界面 (GUI) 的类库,它允许开发者创建独立于操作系统的窗口、按钮、菜单等控件。 - *...

      java名词速查表 java名词速查表

      ### Java名词速查表 #### Abstract class (抽象类) - 抽象类是一种不能实例化的类,主要用于提供一个模板或基础框架供子类继承。它通常包含一个或多个抽象方法,以及实现了一些具体的方法和属性。 - **特点**:不...

      Java常用英语单词

      25. **JVM(Java Virtual Machine)**:Java虚拟机,负责执行Java字节码。 了解并熟练使用这些词汇,对于提升Java编程技能和理解源码至关重要。通过不断学习和实践,你可以更深入地理解Java的精髓,成为一名优秀的...

      Easy Image Modifier(批量修改图片大小)v4.7.2绿色版

      《Easy Image Modifier:批量图像处理的利器》 在数字化时代,图像处理已成为日常生活和工作中不可或缺的一部分,无论是个人照片修饰还是商业用途的图像编辑,都离不开高效便捷的工具。"Easy Image Modifier"就是...

      JAVA词汇表下载.docJAVA词汇表下载.doc

      11. 类加载器(Class Loader):Java 运行时环境使用类加载器动态加载类到内存中。类加载器负责将类的字节码转换为 Class 对象,并确保类的唯一性。 12. 泛型(Generics):泛型是 Java 5 的新特性,用于提供编译时...

    Global site tag (gtag.js) - Google Analytics