文档库 最新最全的文档下载
当前位置:文档库 › JAVA方法重载与构造方法简介

JAVA方法重载与构造方法简介

JAVA方法重载与构造方法简介

方法重载是指对多个方法享有相同的名字,但是这些方法的参数必须不同,或者是参数的个数不同,或者是参数类型不同。返回类型不能用来区分重载的方法。注意:再设计重载方法的时候,参数类型的区分度一定要足够,列如不能是同一简单类型的参数,如int型和long型。

构造方法是一个特殊的方法,主要用于初始化新创建的对象。构造方法的方法名要求与类名相同,而且无返回值。在新创建对象时,Java系统会自动调用构造方法为新对象初始化。另外,构造方法只能通过new运算符调用,用户不能直接调用。需要注意的是,在这里说构造方法无返回值,并不是要在构造方法名前加上void,构造方法名是不能有void的,如果在构造方法构造方法名前加了void,系统就不会自动调用该方法了。

一个类可以创建多个构造方法,当类中包含有多个构造方法时,将根据参数的决定要用哪个构造方法来初始化新创建对象的状态,达到方法重载的目的

java中什么是构造函数

java中类的构造函数到底有什么用 如题,例如一段代码 class point2{ int x,y; point2(int a,int b){//构造函数;含参的构造函数;构造方法必须要和类名一致 //且没有返回值 x=a; y=b; } void output(){ System.out.println(x); System.out.println(y); } public static void main(String args[]){//类的实例 point2 pt; pt=new point2(3,3);//声明实例变量;传递参数给构造函数的变量 pt.output();//实际上调用了类中的构造函数; } } 那么我不用构造函数,只声明成员变量是否可以直接代替构造函数,请详细解释构造函数的作用 满意回答 什么是构造函数,问的好。 开始的时候我也不理解为什么要构造函数。因为那时候的设计思想还停留在面向过程编程。即我要干什么事,这件事有几个步骤,然后我决定怎么干。 面向对象不是这么直接简单,它的设计思想就是要代码重用。即我以前干过类似的事,那么我找出以前可以用到的代码,完成一部分。以前没有的我重新写。这样就有了类。 回到你提的问题。有了类,就是有了可以重用的代码,但是我怎么产生这个对象呢。必须要实例化这个类(当然这不是唯一产生对象的途径,比如单例模式,但本质上说所有途径都是一样的)。那么就要用到构造函数。即告诉程序我现在要实例化一个对象了,你给我马上分配内存。将内存的首地址赋给我指定的类对象。而且有时候你需要传递参数到函数里面,有了构造函数就方便了,构造函数

可以有无数个。当然,传递参数到到对象里面也可以其它方法,比如直接赋一个值给成员变量,举例: class point2{ int x,y; point2(){ } point2(int a,int b){//构造函数;含参的构造函数;构造方法必须要和类名一致 //且没有返回值 x=a; y=b; } void output(){ System.out.println(x); System.out.println(y); } public static void main(String args[]){ point2 pt=new point2();//实例化对象,这时候x,y没有赋值,默认初始值为0; pt.output(); pt.x=3;pt.y=3; pt.output(); } } =============================================================================== ===============================================================================

c 类构造函数详解

这篇文章主要介绍了c++类构造函数示例,需要的朋友可以参考下 代码如下: //一、构造函数是干什么的 /* 类对象被创建时,编译系统对象分配内存空间,并自动调用该构造函数->由构造函数完成成员的初始化工作 eg: Counter c1; 编译系统为对象c1的每个数据成员(m_value)分配内存空间,并调用构造函数Counter( )自动地初始化对象,初始化之后c1的m_value值设置为0 故:构造函数的作用:初始化对象的数据成员。*/ class Counter { public: // 类Counter的构造函数,以类名作为函数名,无返回类型 Counter(){ m_value = 0; } private: int m_value; // 类私有的数据成员 } //二、构造函数的种类 #include using namespace std; class Complex { private : double m_real; double m_imag; public: //*无参数构造函数 // 如果创建一个类你没有写任何构造函数,则系统会自动生成默认的无参构造函数,函数为空,什么都不做 // 只要你写了一个下面的某一种构造函数,系统就不会再自动生成这样一个默认的构造函数,如果希望有一个这样的无参构造函数,则需要自己显示地写出来Complex(void) { m_real = 0.0; m_imag = 0.0; } //*一般构造函数(也称重载构造函数) //一般构造函数可以有各种参数形式,一个类可以有多个一般构造函数,前提是参数的个数或者类型不同(基于c++的重载函数原理) //例如:你还可以写一个Complex(int num)的构造函数出来,创建对象时根据传入的参数不同调用不同的构造函数 Complex(double real, double imag)

构造函数

c++构造函数的知识在各种c++教材上已有介绍,不过初学者往往不太注意观察和总结其中各种构造函数的特点和用法,故在此我根据自己的c++编程经验总结了一下c++中各种构造函数的特点,并附上例子,希望对初学者有所帮助。 c++类的构造函数详解 一、构造函数是干什么的 class Counter { public: // 类Counter的构造函数 // 特点:以类名作为函数名,无返回类型 Counter() { m_value = 0; } private: // 数据成员 int m_value; } 该类对象被创建时,编译系统对象分配内存空间,并自动调用该构造函数->由构造函数完成成员的初始化工作 eg: Counter c1; 编译系统为对象c1的每个数据成员(m_value)分配内存空间,并调用构造函数Counter( )自动地初始化对象c1的m_value值设置为0 故: 构造函数的作用:初始化对象的数据成员。 二、构造函数的种类 class Complex { private : double m_real; double m_imag;

public: // 无参数构造函数 // 如果创建一个类你没有写任何构造函数,则系统会自动生成默认的无参构造函数,函数为空,什么都不做 // 只要你写了一个下面的某一种构造函数,系统就不会再自动生成这样一个默认的构造函数,如果希望有一个这样的无参构造函数,则需要自己显示地写出来 Complex(void) { m_real = 0.0; m_imag = 0.0; } // 一般构造函数(也称重载构造函数) // 一般构造函数可以有各种参数形式,一个类可以有多个一般构造函数,前提是参数的个数或者类型不同(基于c++的重载函数原理) // 例如:你还可以写一个Complex( int num)的构造函数出来 // 创建对象时根据传入的参数不同调用不同的构造函数 Complex(double real, double imag) { m_real = real; m_imag = imag; } // 复制构造函数(也称为拷贝构造函数) // 复制构造函数参数为类对象本身的引用,用于根据一个已存在的对象复制出一个新的该类的对象,一般在函数中会将已存在对象的数据成员的值复制一份到新创建的对象中// 若没有显示的写复制构造函数,则系统会默认创建一个复制构造函数,但当类中有指针成员时,由系统默认创建该复制构造函数会存在风险,具体原因请查询有关“浅拷贝”、“深拷贝”的文章论述 Complex(const Complex & c) { // 将对象c中的数据成员值复制过来 m_real = c.m_real; m_img = c.m_img; } // 类型转换构造函数,根据一个指定的类型的对象创建一个本类的对象 // 例如:下面将根据一个double类型的对象创建了一个Complex对象 Complex::Complex(double r) { m_real = r; m_imag = 0.0;

java基础知识点总结

Created by AIwen on 2017/5/14. java是面向对象的程序设计语言;类可被认为是一种自定义的数据类型,可以使用类来定义变量,所有使用类定义的变量都是引用变量,它们将会引用到类的对象。类用于描述客观世界里某一类对象的共同特征,而对象则是类的具体存在,java程序使用类的构造器来创建该类的对象。 java也支持面向对象的三大特征:封装、继承、和多态。java提供了private、protected、和public三个访问控制修饰符来实现良好的封装,提供了extends关键字让子类继承父类,子类继承父类就可以继承到父类的成员变量和和方法,如果访问控制允许,子类实例可以直接调用父类里定义的方法。继承是实现类复用的重要手段。使用继承关系来实现复用时,子类对象可以直接赋给父类变量,这个变量具有多态性。 面向对象的程序设计过程中有两个重要的概念:类(Class)和对象(object,也被称为实例,instance)。类可以包含三种最常见的成员:构造器、成员变量、和方法。 构造器用于构造该类的实例,java语言通过new关键字类调用构造器,从而返回该类的实例。构造器是一个类创建对象的根本途径,如果一个类没有构造器,这个类通常无法创建实例。因此java语言提供了一个功能:如果程序员没有为一个类编写构造器,则系统会为该类提供一个默认的构造器,这个构造器总是没有参数的。一旦程序员为一个类提供了构造器,系统将不再为该类提供构造器。 构造器用于对类实例进行初始化操作,构造器支持重载,如果多个重载的构造器里包含了相同的初始化代码,则可以把这些初始化代码放置在普通初始化块里完成,初始化块总在构造器执行之前被调用。静态初始化块代码用于初始化类,在类初始化阶段被执行。如果继承树里某一个类需要被初始化时,系统将会同时初始化该类的所有父类。 构造器修饰符:可以是public、protected、private其中之一,或者省略构造器名:构造器名必须和类名相同。 注意:构造器既不能定义返回值类型,也不能使用void声明构造器没有返回值。如果为构造器定义了返回值类型,或使用void声明构造器没有返回值,编译时不会出错,但java会把这个所谓的构造器当成方法来处理——它就不再是构造器。 实际上类的构造器是有返回值的,当使用new关键字来调用构造器时,构造器返回该类的实例,可以把这个类的实例当成构造器的返回值。因此构造器的返回值类型总是当前类,无须定义返回值类型。不要在构造器里显式的使用return来返回当前类的对象,因为构造器的返回值是隐式的。 java类名必须是由一个或多个有意义的单词连缀而成的,每个单词首字母大写,其他字母全部小写,单词与单词之间不要使用任何分隔符。 成员变量: 成员变量的修饰符:public、protected、private、static、final前三个只能出现一个再和后面的修饰符组合起来修饰成员变量,也可省略。 成员变量:由一个或者多个有意义的单词连缀而成,第一个单词首字母小写,后面每个单词首字母大写,其他字母全部小写,单词与单词之间不要使用任何分隔符。 类型:可以是java语言允许的任何数据类型,包括基本类型和引用类型。 成员方法: 方法修饰符:public、protected、private、static、final、abstract,前三个只能出现一个,static和final最多只能出现其中的一个,和abstract组合起来使用。也可省略。 返回值类型:可以是java语言的允许的任何数据类型,包括基本类型和引用类型。 方法名:和成员变量的方法命名规则相同,通常建议方法名以英文动词开头。 方法体里多条可执行语句之间有严格的执行顺序,排在方法体前面的语句总先执行,排在方法体后面的语句总是后执行。

练习题—方法和方法的重载

一.选择题 1.下列方法定义中,正确的是( )。 A)int x( int a,b ) { return (a-b); } B)double x( int a,int b) { int w; w=a-b; } C)double x( a,b ) { return b; } D)nt x( int a,int b) { return a-b; } 2.下列方法定义中,正确的是( )。 A)void x( int a,int b ); { return (a-b); } B)x( int a,int b) { return a-b; } C)double x { return b; } D)int x( int a,int b) { return a+b; } 3.下列方法定义中,不正确的是( )。 A)float x( int a,int b ) { return (a-b); } B)int x( int a,int b) { return a-b; } C)int x( int a,int b ) { return a*b; } D)int x(int a,int b) { return 1.2*(a+b); } 4.下列方法定义中,正确的是( )。 A)int x( ){ char ch='a'; return (int)ch; } B)void x( ){ ...return true; } C)int x( ){ ...return true; } D)nt x( int a, b){ return a+b; } 5.下列方法定义中,方法头不正确的是( )。 A)public int x( ){ ... } B)public static int x( double y ){ ... } C)void x( double d ) { ... } D)public static x( double a ){ ... } 6.在某个类中存在一个方法:void getSort(int x),以下能作为这个方法的重载的声明的是( )。 A)public getSort(float x) B)int getSort(int y) C)double getSort(int x,int y) D)void get(int x,int y) 7.在某个类中存在一个方法:void sort(int x),以下不能作为这个方法的重载的声明的是( )。 A)public float sort(float x) B)int sort(int y) C)double sort(int x,int y) D)void sort(double y) 8.为了区分类中重载的同名的不同方法,要求( )。 A)采用不同的形式参数列表B)返回值类型不同 C)调用时用类名或对象名做前缀D)参数名不同

C#中构造函数使用方法

C#构造函数是在创建给定类型的对象时执行的类方法。构造函数具有与类相同的名称,它通常初始化新对象的数据成员。不带参数的构造函数称为“默认构造函数”。无论何时,只要使用new 运算符实例化对象,并且不为new 提供任何参数,就会调用默认构造函数。除非类是static 的,否则C# 编译器将为无构造函数的类提供一个公共的默认构造函数,以便该类可以实例化。 构造函数必须是在类里的一级声明,并且命名为类名, 形式为:修饰符类名(参数类型1,参数名1,。。。) 例如 class A { public int x, y; public string s; // 默认构造函数 public A() { x = 0; y = 0; } //带参数的构造函数 public A(string a) { this.s=a; } } 一般函数的声明则不受这些约束 只要定义在命名空间内,命名形式为:修饰符返回值类型函数名(参数类型1,参数名1,。。。) 例如:private static void Main(string args) 声明了一个私有的静态主函数,无返回值,参数为args,string类型vvv 一、C#构造函数?Construct,Function 构造函数是一种特殊的成员函数,它主要用于为对象分配存储空间,对数据成员进行初始化. 构造函数具有一些特殊的性质: (1)构造函数的名字必须与类同名; (2)构造函数没有返回类型,它可以带参数,也可以不带参数; (3)声明类对象时,系统自动调用构造函数,构造函数不能被显式调用; (4)构造函数可以重载,从而提供初始化类对象的不同方法; (5)若在声明时未定义构造函数,系统会自动生成默认的构造函数,此时构造函数的函数体为空.

c#方法重载构造函数重载构造函数小结

C#方法重载、构造函数、重载构造函数小结 方法重载 可以使同一功能适用于各种类型的数据,它是声明两个以上的同名方法,实现对不同数据类型进行相同的处理 方法重载的要求 1、重载的方法名称必须相同 2、重载的方法,其形参个数或类型必须不同 如我们定义了swap(ref int a,ref intb)该函数用来实现两个整形变量值的交换,但不会处理浮点型数据,我们在定义一个swap(ref flot a,ref flot b),这样swap这个方法可以实现整形变量值的交换,也可以实现浮点型数据交换了(系统会根据数据的类型自己决定调用合适的方法) 构造函数 主要作用是在创建对象(声明对象)时初始化对象。一个类定义必须至少有一个构造函数,如果定义类时,没有声明构造函数,系统会提供一个默认的构造函数。举个例子或许可以更好的理解它: 结果是: 若想在创建对象时,将对象数据成员设定为指定的值,则要专门声明构造函数。 声明构造函数的要求:

1、构造函数不允许有返回类型 2、构造函数名称必须与类同名。 通常构造函数是为了在创建对象时对数据成员初始化,所以构造函数需要使用形参。 public Student(string ID,int Age) { id=ID; age=Age; } 由于上述构造函数带了参数,系统不会提供默认构造函数,所以在创建对象时,必须按照声明的构造函数的参数要求给出实际参数。 Student s1= new Student(“90090”,22); New关键字后面实际是对构造函数的调用。 如果声明构造函数时使用的参数名称和类数据成员名称相同,那么构造函数中使用的类数据成员名称要有this引导Public student(string id,int age) { This.id=id; This.age=age; } 关键字this指的是创建的对象,是声明对象时,由系统自动

C# 方法重载

c#方法重载 2008-11-14 14:27 首先我们说一下什么是方法重载。在面对对象这样的高级语言中都允许我们在一个类中定义多个方法名相同、方法间参数个数和参数顺序不同的方法,对于参数个数不同或者参数列表不同的情况我们称之为参数列表不同。需要注意的是这里没有提到方法的返回值。也就是决定方法是否构成重载有两个条件: (1)在同一个类中; (2)方法名相同; (3)参数列表不同。 例如下面的代码: 1. public void Show()//(1) 2. { 3. Console.WriteLine("Nothing"); 4. } 5. 6. public void Show(int number)//(2) 7. { 8. Console.WriteLine(number); 9. } 10. /* 11. public int Show(int number)//(3) 12. { 13. Console.WriteLine(number); 14. return number % 5; 15. } 16. */ 对于上面的代码,(1)没有参数,(2)使用了一个int类型的参数,(1)和(2)之间就构成了重载。(2)与(3)相比仅仅返回值不同,虽然重载不关心返回值的不同,但是在C#中不允许存在方法名和参数列表相同、返回值不同的方法,所以(2)和(3)不能同时存在于代码中,(3)如果不注释掉上面的代码是没有办法通过编译的。 上面我们仅仅讨论了重载的一些基本常识,下面我们探讨一下一些情况稍微复杂的重载情况。 首先我们看第一个版本: https://www.wendangku.net/doc/4618890591.html,ing System; https://www.wendangku.net/doc/4618890591.html,ing System.Collections.Generic; https://www.wendangku.net/doc/4618890591.html,ing System.Text; 4. https://www.wendangku.net/doc/4618890591.html,space OverrideDemo 6.{ 7. ///

8. /// 说明:本实例用于讲述重载的关系 9. /// 作者:周公 10. /// 日期:2008-09-04 11. /// 首发地址:https://www.wendangku.net/doc/4618890591.html,/zhoufoxcn 12. ///

C++构造函数详解及显式调用构造函数

C++构造函数详解及显式调用构造函数 c++类的构造函数详解 一、构造函数是干什么的 class Counter { public: // 类Counter的构造函数 // 特点:以类名作为函数名,无返回类型 Counter() { m_value = 0; } private: // 数据成员 int m_value; } 该类对象被创建时,编译系统对象分配内存空间,并自动调用该构造函数->由构造函数完成成员的初始化工作 eg: Counter c1; 编译系统为对象c1的每个数据成员(m_value)分配内存空间,并调用构造函数Counter( )自动地初始化对象c1的m_value值设置为0 故: 构造函数的作用:初始化对象的数据成员。 二、构造函数的种类 class Complex { private : double m_real; double m_imag; public: // 无参数构造函数 // 如果创建一个类你没有写任何构造函数,则系统会自动生成默认的无参构造函数,函数为空,什么都不做 // 只要你写了一个下面的某一种构造函数,系统就不会再自动生成这样一个默认的构造函数,如果希望有一个这样的无参构造函数,则需要自己显示地写出来 Complex(void) { m_real = 0.0; m_imag = 0.0; } // 一般构造函数(也称重载构造函数) // 一般构造函数可以有各种参数形式,一个类可以有多个一般构造函数,前提是参数的个数或者

类型不同(基于c++的重载函数原理) // 例如:你还可以写一个Complex( int num)的构造函数出来 // 创建对象时根据传入的参数不同调用不同的构造函数 Complex(double real, double imag) { m_real = real; m_imag = imag; } // 复制构造函数(也称为拷贝构造函数) // 复制构造函数参数为类对象本身的引用,用于根据一个已存在的对象复制出一个新的该类的对象,一般在函数中会将已存在对象的数据成员的值复制一份到新创建的对象中 // 若没有显示的写复制构造函数,则系统会默认创建一个复制构造函数,但当类中有指针成员时,由系统默认创建该复制构造函数会存在风险,具体原因请查询有关“浅拷贝” 、“深拷贝”的文章论述 Complex(const Complex & c) { // 将对象c中的数据成员值复制过来 m_real = c.m_real; m_imag = c.m_imag; } // 类型转换构造函数,根据一个指定的类型的对象创建一个本类的对象, //需要注意的一点是,这个其实就是一般的构造函数,但是对于出现这种单参数的构造函数,C++会默认将参数对应的类型转换为该类类型,有时候这种隐私的转换是我们所不想要的,所以需要使用explicit来限制这种转换。 // 例如:下面将根据一个double类型的对象创建了一个Complex对象 Complex(double r) { m_real = r; m_imag = 0.0; } // 等号运算符重载(也叫赋值构造函数) // 注意,这个类似复制构造函数,将=右边的本类对象的值复制给等号左边的对象,它不属于构造函数,等号左右两边的对象必须已经被创建 // 若没有显示的写=运算符重载,则系统也会创建一个默认的=运算符重载,只做一些基本的拷贝工作 Complex &operator=( const Complex &rhs ) { // 首先检测等号右边的是否就是左边的对象本身,若是本对象本身,则直接返回 if ( this == &rhs ) { return *this; } // 复制等号右边的成员到左边的对象中 this->m_real = rhs.m_real;

C++重载运算符的几类使用方法

1.非运算符重载实现复数的加法运算//非运算符重载实现复数的加法运算 //complex.h #include #ifndef COMPLEX_H #define COMPLEX_H class complex { public: complex(); doublegetreal(); doublegetimag(); voidsetreal(double); voidsetimag(double); void display(); private: double real; double image; }; #endif //complex.cpp #include #include"complex.h" complex::complex() { real = 0; image = 0; } void complex::setreal(double r) { real = r; } void complex::setimag(double i) { image = i; } double complex::getreal() { return real; }

double complex::getimag() { return image; } void complex::display() { cout<<"the result is\n"< #include"complex.h" complex add(complex comp1,complex comp2); complex sub(complex comp1,complex comp2); void main() { complex c1,c2,c3,c4; c1.setreal(2.0); c1.setimag(3.0); c2.setreal(1.0); c2.setimag(4.0); c3 = add(c1,c2); cout<<"c3 = c1 + c2 , "; c3.display(); c4 = sub(c1,c2); cout<<"c4 = c1 - c2 ,"; c4.display(); } complex add(complex comp1,complex comp2) { complex temp; temp.setreal(comp1.getreal() + comp2.getreal()); temp.setimag(comp1.getimag() + comp2.getimag()); return temp; } complex sub(complex comp1,complex comp2) { complex temp; temp.setreal(comp1.getreal() - comp2.getreal()); temp.setimag(comp1.getimag() - comp2.getimag()); return temp; } 2.运算符重载作为类的成员函数 //运算符重载作为类的成员函数

实验五 方法的重载和静态成员

实验五方法的重载和静态成员 【实验目的】 1.巩固掌握构造方法的作用和定义; 2.掌握方法重载的意义和实现方式; 3.掌握静态成员的使用方法。 【实验准备】 复习配套教材相关章节的内容; 【实验内容】 项目一: 1.定义一个游戏中Hero 英雄的类,在该类中定义英雄的名字,生命值和等级 3 个属性,定义一个无参构造方法完成对名字、生命值和等级的初始化,分 别赋初值为“无名英雄”、100和1。同时实现名字和英雄信息的输出。 public class Hero { String name; int healthPower = 100; int grade; public Hero() { https://www.wendangku.net/doc/4618890591.html, ="无名英雄"; this.healthPower = 100; this.grade=1; } void showInfo() { System.out.println("——英雄信息——"); System.out.println("名字:" + https://www.wendangku.net/doc/4618890591.html,); System.out.println("生命值:" + this.healthPower); System.out.println("类型:" + this.grade); } }

2.在上一步的基础上,为英雄再定义拥有一个参数的构造方法,第一个参数传 入英雄的名字,第二个参数传入一个英雄类型的值,如果为1,则为普通英雄,生命值为100;如果该值为2,则为高级英雄,生命值初始化为200;如果该值为3,则为超级英雄,生命值初始化为300。 Public Hero(String name, int grade) { https://www.wendangku.net/doc/4618890591.html, = name; if (grade == 3) { this.healthPower = 300; this.grade = 3; } else if (grade == 2) { this.healthPower = 200; this.grade = 2; } else { this.healthPower = 100; this.grade = 1; } } 3.为英雄添加一个基本战斗的方法,该方法拥有一个英雄类型的参数,当传入 另一个英雄时,能降低对方10点血。再增加一个绝招战斗的重载方法,加入一个绝招类型参数,通过输入不同绝招参数,降低对方不同的血量(这里简化为:1,多杀伤3点血,2,多杀伤6点血,3,多杀伤10点血)。 void fight(Hero opponent) { opponent.healthPower -= 10; } void fight(Hero opponent, int skill) { opponent.healthPower -= 10; if (skill == 3) { opponent.healthPower -= 10; } else if (skill == 2) { opponent.healthPower -= 6; } else if (skill == 1) { opponent.healthPower -= 3; } } 4.在主类的主方法中编写代码,测试。 public static void main(String[] args) { // TODO code application logic here

Java构造方法练习题

1、: 猜数字游戏:一个类A有一个成员变量v,有一个初值100。定义一个类,对A 类的成员变量v进行猜。如果大了则提示大了,小了则提示小了。等于则提示猜测成功。 2、 请定义一个交通工具(Vehicle)的类,其中有: 属性:速度(speed),体积(size)等等 方法:移动(move()),设置速度(setSpeed(int speed)),加速speedUp(),减速speedDown()等等. 最后在测试类Vehicle中的main()中实例化一个交通工具对象,并通过构造方法给它初始化speed,size的值,并且通过打印出来。另外,调用加速,减速的方法对速度进行改变。 3、 在程序中,经常要对时间进行操作,但是并没有时间类型的数据。那么,我们可以自己实现一个时间类,来满足程序中的需要。 定义名为MyTime的类,其中应有三个整型成员:时(hour),分(minute),秒(second),为了保证数据的安全性,这三个成员变量应声明为私有。 为MyTime类定义构造方法,以方便创建对象时初始化成员变量。 再定义diaplay方法,用于将时间信息打印出来。 为MyTime类添加以下方法: addSecond(int sec) addMinute(int min) addHour(int hou) subSecond(int sec) subMinute(int min) subHour(int hou) 分别对时、分、秒进行加减运算。 4、 编写Java程序,模拟简单的计算器。 定义名为Number的类,其中有两个整型数据成员n1和n2,应声明为私有。编写构造方法,赋予n1和n2初始值,再为该类定义加(addition)、减(subtration)、乘(multiplication)、除(division)等公有成员方法,分别对两个成员变量执行加、减、乘、除的运算。 在main方法中创建Number类的对象,调用各个方法,并显示计算结果。 5: 编写Java程序,用于显示人的姓名和年龄。 定义一个人类(Person),该类中应该有两个私有属性,姓名(name)和年龄(age)。定义构造方法,用来初始化数据成员。再定义显示(display)方法,将姓名和年龄打印出来。

几道JAVA作业关于重载构造函数基本语法

求三个整数中的最大值与最小值,要求在程序中定义三个整形变量并复制,然后求出最大值与最小值。 package firstwork; class MaxAndMin { public static void main(String[] args) { int a=4; int b=1; int c=12; int max,min; max=a>b?a:b; max=max>c?max:c; min=(a

package firstwork; public class gongyueshu { public static void main(String[] args) { // TODO Auto-generated method stub int m=38,n=152; while(m%n!=0){ int temp=m%n; m=n; n=temp; System.out.println("max gongyueshu is:"+n); } } } 判断某年是否为闰年,要求从命令行中输入一个年份,然后判断该年是否为闰年。 package firstwork; import java.util.Scanner; public class ruinian { public static void main(String[] args) { // TODO Auto-generated method stub Scanner in= new Scanner(System.in); int year=in.nextInt(); System.out.println("you input Year:"+year); //year. //int year; if((year%4==0&&year%100!=0)||(year%400==0)){ System.out.println("This year is a leap year!"); } else{ System.out.println("This year isn't a leap year!"); } in.close(); } }

如何理解和使用java的构造方法

什么是java的构造方法,如何理解? 很多的新人,才开始学习JA V A的时候会遇到很多的麻烦,对于java中的方法和构造方法的理解很不透彻,那到底Java中的方法和构造方法有什么区别? 构造方法也属于方法,但是他有一个特性,就是在类实例化为一个对象的时候,就是new 的时候,自动执行构造方法。 构造方法就是初始化方法,也可以不写,JVM会自动添加一个默认的构造方法。 1、如何去理解构造方法和普通方法的区别? 方法有返回类型,方法名小写,不能和类名相同;构造方法没有返回类型,void也不行,名与类名相同。 2、构造方法是初始化对象的重要途径,所以就算你给一个类没有定义构造方法,方法在这个类的加载得时候,会自动提供一个没有参数的构造方法。所以,常见得Student s=new Student();那么,s这个实例,是通过构造方法初始化的;而普通方法不行 3、他们运行顺序不同。一个类在初始化的时候,例如People是Student的父类,有构造方法public PeoPle(){}那么,当实例化Student p=new Student()得时候,父类的构造方法会隐式执行(你可自己敲代码尝试,父类构造方法中写个输出语句:例如System.out.println("父类构造方法"))。你会发现,没有调用任何父类,也没有实例化父类,但是构造方法却执行了。构造方法被程序员调用的时候必须用new 关键字。 4、方法仅仅是类成员,构造方法也是类成员,但是,构造方法有对类属性得初始化的功能。所以,常见到public PeoPle(String name){https://www.wendangku.net/doc/4618890591.html,=name}或者public PeoPle(){name="wangsan",age=14},完成了对People类属性name或者age的初始化 作为一名程序员,你到底学会多少? 俗话说得好:优秀的工具并不会把你变得更优秀。但你的经验和能力却很重要。 (一)以人为本 我知道的最好的程序员总是把人放在第一位。他们明白他们是在为人写软件,即使那只是一些复杂系统的后台程序或协议,除了程序员没有人会用到它们。他们写文档,因为这很重要。他们帮助其它人如何使用自己的程序代码。他们愿意付出更多的努力去解决更复杂的问题来让人们以正确的方式使用他们的软件。 (二)对学习有很大的胃口 神奇的程序员对知识有一种可笑的饥渴感。他们总是对你说一些新的、有趣的东西。他们习惯于大量的阅读(不论在线的还是线下的),他们喜欢尝试,从中学到经验。他们对新出现的

Java构造函数的继承问题

Java构造函数的继承问题 ◎构造函数的继承 1、子类只继承父类的默认(缺省)构造函数,即无形参构造函数。如果父类没有默认构造函数,那子类不能从父类继承到任何构造函数。 2、子类从父类处继承来的父类默认构造函数,不能成为子类的默认构造函数。 3、在创建对象时,先调用父类默认构造函数对对象进行初始化,然后调用子类自身自己定义的构造函数。 4、如果子类想调用父类的非默认构造函数,则必须使用super来实现。 5、子类必须调用父类的构造函数。可以通过系统自动调用父类的默认构造函数,如果父类没有默认构造函数时,子类构造函数必须通过super调用父类的构造函数。 缺省构造函数的问题:base类是父类,derived类是子类,首先要说明的是由于先有父类后有子类,所以生成子类之前要首先有父类。class 是由class的构造函数constructor产生的,每一个class都有构造函数,如果你在编写自己的class时没有编写任何构造函数,那么编译器为你自动产生一个缺省default 构造函数。这个default构造函数实质是空的,其中不包含任何代码。但是一牵扯到继承,它的问题就出现了。 如果父类base class只有缺省构造函数,也就是编译器自动为你产生的。而子类中也只有缺省构造函数,那么不会产生任何问题,因为当你试图产生 一个子类的实例时,首先要执行子类的构造函数,但是由于子类继承父类,所以子类的缺省构造函数自动调用父类的缺省构造函数。先产生父类的实例,然后再产生子类的实例。如下: 以下为引用的内容: class base{ } class derived extends base{ public static void main(String[] args){ derived d=new derived(); } } 下面显式地加上了缺省构造函数:

C_构造函数的重载 我是C语言爱好者

C#构造函数的重载 C#中的构造函数也可以应用方法重载。C#中有默认构造函数,也可以定义带参数的构造函数。构造函数必须与类同名,并且不能有返回值。所以C#构造函数重载相当于不同数量的参数方法重载。 所谓重载构造函数是指允许在类中有多个构造函数。当然这些构造函数肯定是有区别的。各个构造函数必须拥有不同的参数个数或者类型 using System; class Animal { public string _name; public string _color; public int _speed; public Animal() { this._speed = 30;//this 表示 } public Animal(string name, string color) { this._name = name; this._color = color; } public Animal(string name, string color, int speed) { this._name = name; this._color = color; this._speed = speed; } } class Program { static void Main(string[]args) { //方法一 Animal animal1 = new Animal(); animal1._name = "兔子"; animal1._color = "灰色"; //animal1._speed = 40; Console.WriteLine( "调用默认构造函数输出动物为{0},颜色为{1},奔跑速度为{2}km/h",

JAVA构造方法私有化

1、对象实例化:类名对象名=new类名(); 取得实例化对象:s1=Singleton.getInstance(); 2、一个类的构造方法被私有化之后,则只能通过“类.方法()”取得实例化对象 举例如下,详细请看另外一个word:单例模式讲解 饿汉式:因为static变量能够在加载类时被初始化,在饿汉式中就是被=new MyBean()所以在加载类时就实例化,以后执行MyBean.getInstance()时只是引用该实例public class MyBean{ private static MyBean instance=new MyBean();//冠:在SpringMVC中,所有的类包括自定义的类在加载(也就是扫描注解的类)时默认添加类似此行的代码再加载 private MyBean(){}//私有化构造方法保证了不能使用new实例化 public static synchronized MyBean getInstance(){ return instance; } 懒汉式:第一次执行MyBean.getInstance()时才实例化,以后执行MyBean.getInstance()时,会先判断static变量是否为null,若是则再次实例化,若不是才引用第一次的实例public class MyBean{ private static MyBean instance=null; private MyBean(){}//私有化构造方法保证了不能使用new实例化 public static synchronized MyBean getInstance(){ if(instance==null){instance=new MyBean();} return instance; } 不管外部声明了多少个MyBean的对象,但是最终结果都是通过getInstance()方法取得实例化对象。此时s1、s2、s3实际上都使用了一个对象的引用:instance。

相关文档