首页 > 其他分享 >方法

方法

时间:2024-07-13 23:32:06浏览次数:11  
标签:name 构造方法 void class 方法 public

方法

访问权限

  • public:该方法可以被所有类访问。
  • private:该方法只能在定义它的类中访问。
  • protected:该方法可以被同一个包中的类,或者不同包中的子类访问。
  • default:如果一个方法没有使用任何访问权限修饰符,那么它是 package-private 的,意味着该方法只能被同一个包中的类可见。

抽象方法

  • 没有方法体的方法被称为抽象方法,它总是在抽象类中声明。
abstract class AbstractDemo {
    abstract void display();
}
  • 当一个类继承了抽象类后,就必须重写抽象方法
public class MyAbstractDemo extends AbstractDemo {
    @Override
    void display() {
        System.out.println("重写了抽象方法");
    }

    public static void main(String[] args) {
        MyAbstractDemo myAbstractDemo = new MyAbstractDemo();
        myAbstractDemo.display();
    }
}

可变参数

  • 可变参数是 Java 1.5 的时候引入的功能,它允许方法使用任意多个、类型相同(is-a)的值作为参数

  • 可变参数必须要在参数列表的最后一位

  • 避免重载带有可变参数的方法

native方法

JNI使用场景

  • 标准的 Java 类库不支持。
  • 已经用另一种语言,比如说 C/C++ 编写了一个类库,使用 Java 代码调用
  • 某些运行次数特别多的方法,为了加快性能,需要用更接近硬件的语言(比如汇编)编写。

JNI缺点

  • 程序不再跨平台。要想跨平台,必须在不同的系统环境下重新编译本地语言部分。
  • 程序不再是绝对安全的,本地代码的不当使用可能导致整个程序崩溃。一个通用规则是,你应该让本地方法集中在少数几个类当中。这样就降低了 Java 和 C/C++ 之间的耦合性。

JNI语法

  • 修饰方法的位置必须在返回类型之前,和其余的方法控制符前后关系不受限制。
  • 不能用 abstract 修饰,也没有方法体,也没有左右大括号。
  • 返回值可以是任意类型

用C语言编写程序本地方法

①、编写带有 native 方法的 Java 类,生成.java 文件;

public class HelloJNI {
    static {
        // 加载名为libhello.dylib的动态链接库
        System.loadLibrary("hello");
    }

    // 定义本地方法
    private native void helloJNI();

    public static void main(String[] args) {
        // 调用本地方法
        new HelloJNI().helloJNI();
    }
}

②、使用 javac HelloJNI.java 命令编译所编写的 Java 类,生成.class 文件;

③、使用 javac -h . .\HelloJNI.java 类名 生成扩展名为 h 的头文件,也即生成 .h 文件;

④、使用 C/C++(或者其他编程想语言)实现本地方法,创建 .h 文件的实现,也就是创建 .cpp 文件实现.h 文件中的方法;

⑤、将 C/C++ 编写的文件生成动态连接库,生成 dll 文件;

构造方法

  • 当一个类被实例化的时候,就会调用构造方法。只有在构造方法被调用的时候,对象才会被分配内存空间。每次使用 new 关键字创建对象的时候,构造方法至少会被调用一次。

构造方法规则

  • 构造方法的名字必须和类名一样;
  • 构造方法没有返回类型,包括 void;
  • 构造方法不能是抽象的(abstract)、静态的(static)、最终的(final)、同步的(synchronized)。
  • 可以使用访问权限修饰符(private、protected、public、default)来修饰构造方法
class class_name {
     // 默认无参构造方法
    public class_name(){}
    // 定义有参数列表的构造方法
    public ciass_name([paramList]){}    
    …
    // 类主体
}
  • 默认构造方法的目的主要是为对象的字段提供默认值

复制对象

通过构造方法

public class CopyConstrutorPerson {
   ...
    public CopyConstrutorPerson(CopyConstrutorPerson person) {
        this.name = person.name;
        this.age = person.age;
    }
    ...
}

通过对象的值

        CopyValuePerson p2 = new CopyValuePerson();
        p2.name = p1.name;
        p2.age = p1.age;

通过Object类的clone()方法

  • 通过 clone() 方法复制对象的时候,ClonePerson 必须先实现 Cloneable 接口的 clone() 方法,然后再调用 clone() 方法(ClonePerson p2 = (ClonePerson) p1.clone())。

标签:name,构造方法,void,class,方法,public
From: https://www.cnblogs.com/sprinining/p/18300986

相关文章

  • CAD程序性能优化之一般优化方法
           建模效率是CAD软件至关重要的指标,会极大地影响应用中的设计效率,进而决定工业产品的研发周期。鉴于CAD程序的复杂性,在编写完成之前,几乎很难准确判断这段程序是否符合预期的性能要求,往往需要通过实际测试来确认。       图1是提高程序性能的一般流程。......
  • Java基础,final关键字,权限修饰符,内部类,抽象类和接口作为方法的参数和返回值,System类,Obj
    一.final关键字1.final:不可以改变,可以用来修饰类,方法和变量类:被修饰的类,不能被继承方法:被修饰的方法,不能被重写变量:被修饰的变量,不能被重新赋值2.格式:    修饰类:finalclass类名{}    修饰方法:publicfinal返回值类型方法名(){}    修饰变量:fin......
  • 从新手到高手:Scala函数式编程完全指南,Scala 方法与函数(10)
    1、Scala方法与函数Scala有方法与函数,二者在语义上的区别很小。Scala方法是类的一部分,而函数是一个对象可以赋值给一个变量。换句话来说在类中定义的函数即是方法。Scala中的方法跟Java的类似,方法是组成类的一部分。Scala中的函数则是一个完整的对象,Scala中的函......
  • 动态规划的“三步走”方法
    “三步走”方法动态规划问题种类较多,但大多都能通过“三步走”方法解决。状态表示:将具体问题抽象为数学问题,明确需要表示的状态,数组中的下标分别表示哪种状态。状态转移:状态转移相当于递推公式。主要有两种方式,可以从上一个状态转移到当前状态,或者从当前状态转移到下一个状态......
  • 数学建模论文写作方法——首页
    个人学习笔记,课程为数学建模清风——论文写作方法教程(国赛和美赛)首页三要素:论文标题+摘要+关键词目录一、论文标题1.两种形式2.优秀论文标题实例3.要求二、摘要(超级重要!!!)1.什么是摘要2.摘要的作用3.三要素4.书写特点5.重要性6.摘要样例7.摘要占据的篇幅8.摘要的......
  • 聚类分析方法(三)
    目录五、聚类的质量评价(一)簇的数目估计(二)外部质量评价(三)内部质量评价六、离群点挖掘(一)相关问题概述(二)基于距离的方法(三)基于相对密度的方法七、其它聚类方法五、聚类的质量评价  聚类分析是将一个数据集分解成若于个子集,每个子集称为一个簇,所有子集形成的集合称......
  • 初识Java的main方法
    上文我们了解了Java语言的相关发展和Java的实用领域,此文我们从Java的main方法开始了解Java吧!1.main方法示例publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world");}}图解:如上展示的就是最简单的一个Java程序,可......
  • 全网最适合入门的面向对象编程教程:16 类和对象的Python实现-多态、方法重写与开闭原则
    全网最适合入门的面向对象编程教程:16类和对象的Python实现-多态、方法重写与开闭原则摘要:本文主要介绍了Python中创建自定义类时子类如何实现对父类方法的重写、方法重写的定义和多态的基本概念,并对开闭原则进行介绍。原文链接:FreakStudio的博客往期推荐:学嵌入式的你,......
  • idea 出现[08S01] 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全
    目录1.问题所示2.原理分析3.解决方法1.问题所示idea配置Database的时候,出现如下问题:Failed  Copy SearchError Troubleshooting[08S01]驱动程序无法通过使用安全套接字层(SSL)加密与SQLServer建立安全连接。错误:“Theserverselectedprotoco......
  • 2024最新方法,安全中心报错“页面不可用”,可以尝试以下方法解决
    如果你的电脑出现:页面不可用你的IT管理员已限制对此应用的某些区域的访问,并且你尝试访问的项目不可用。有关详细信息,请与IT支持人员联系。出现这个问题分别由以下原因导致:1.大部分是安装了某些安全杀毒软件,此类软件会写入策略,来接管系统自带的Windows安全中心。2.某些流氓软......