-
2021-11-16 20:16:11
1.构造方法
构造器也叫构造方法(constructor),用于对象的初始化。Java通过new关键字来调用构造器,从而返回该类的实例。
声明格式:
[修饰符]类名(形参列表){ //n条语句 }
构造器4个要点:
-
构造器通过new关键字调用
-
构造器虽然有返回值,但是不能定义返回值类型,不能在构造器里使用return返回某个值
-
如果我们没有定义构造器,则编译器会自动定义一个无参的构造函数,如果已经定义则编译器不会自动添加
-
构造器的方法名必须和类名一致
举例
class Point{ double x; double y; public Point(double _x,double _y) { this.x = _x; this.y = _y; } public double getDistance(Point p) { return Math.sqrt((x-p.x)*(x-p.x)+(y-p.y)*(y-p.y)); } } public class TestConstructor { public static void main(String[] args) { Point p = new Point(3.0,4.0); Point orgin = new Point(0.0,0.0); System.out.println(p.getDistance(orgin)); } }
2.构造方法重载
public class User { int id; String name; String pwd; //密码 public User() { } public User(int id,String name) { this.id = id; this.name = name; } public User(int id,String name,String pwd) { this.id = id; this.name = name; this.pwd = pwd; } public static void main(String[] args) { User u1 = new User(); User u2 = new User(101,"fei"); User u3 = new User(102,"fei","123456"); } }
重载就是方法名相同,形参不同,通过方法名+形参列表一起调用的方式进行。
通过this表示属性和形参。
更多相关内容 -
-
Java语言程序设计 构造方法重载 构造方法重载.pptx
2020-12-10 11:18:35Unit4Java语言程序设计编程面向对象4.5 构造方法4.5.1 类的创建过程4.5.2 默认构造方法主讲 张 红4.5.3 构造方法重载4.5.4 this浙江经贸职业技术学院4.5.3 构造方法重载构造方法重载 在同一类中定义了多个同名而不同... -
Python:重载构造方法
2021-03-06 14:18:28对于使用过C++的人来说,构造函数与析构函数不会陌生。构造函数在对象创建时被调用,析构函数在对象被销毁时被调用。而Python中也有类似的特殊函数:__new__,__init__,__del__。其中__new__与__init__共同构成了...对于使用过C++的人来说,构造函数与析构函数不会陌生。
构造函数在对象创建时被调用,析构函数在对象被销毁时被调用。而Python中也有类似的特殊函数:__new__,__init__,__del__。
其中__new__与__init__共同构成了C++中的构造函数,__del__为析构函数。
__new__在对象被创建时被调用,而__init__在对象被初始化时被调用。
__new__ 的第一个参数是对象本身,其他的参数是用来直接传递给 __init__ 方法。 __new__ 方法相当不常用,但是当继承一个不可变的类型(比如一个tuple或者string)时,它将派上用场。但这已经超出了基础的范围,所以暂且不提。
__init__十分常见,用以初始化对象。当父类拥有该函数,而继承的子类想要调用父类的__init__,应该使用super().__init__()而不是父类名.__init__(),以此来避免多继承问题。
__del__在对象被销毁时被调用,但它并不是实现del语法的内置函数。它定义的是对象被销毁时的行为,但由于Python的GC问题,所以对象销毁的时刻无法由编写者完全自控,所以用处也较少。
附:多继承问题
多继承问题是一个古老的 Feature(当一个Bug没法修的时候就叫 Feature)。让我们运行如下代码
class A():
def __init__(self):
print("进入A…")
print("离开A…")
class B(A):
def __init__(self):
print("进入B…")
A.__init__(self)
print("离开B…")
class C(A):
def __init__(self):
print("进入C…")
A.__init__(self
print("离开C…")
class D(B, C):
def __init__(self):
print("进入D…")
B.__init__(self)
C.__init__(self)
print("离开D…")
d = D()
结果如下
进入D…
进入B…
进入A…
离开A…
离开B…
进入C…
进入A…
离开A…
离开C…
离开D…
可以看到,A的__init__被调用了两次。而这并不是我们期待的。为此在有些语言里,禁止了多继承。
Python的解决方法是:使用super()调用父类方法。
class A():
def __init__(self):
print("进入A…")
print("离开A…")
class B(A):
def __init__(self):
print("进入B…")
super().__init__()
print("离开B…")
class C(A):
def __init__(self):
print("进入C…")
super().__init__()
print("离开C…")
class D(B, C):
def __init__(self):
print("进入D…")
super().__init__()
print("离开D…")
d = D()
运行结果如下
进入D…
进入B…
进入C…
进入A…
离开A…
离开C…
离开B…
离开D…
这样A的__init__只被调用了一次
-
详解Java使用super和this来重载构造方法
2020-08-29 15:57:41主要介绍了详解Java使用super和this来重载构造方法的相关资料,这里提供实例来帮助大家理解这部分内容,需要的朋友可以参考下 -
java方法总结(重载,构造方法,调用方法)
2020-12-22 10:02:02构造方法 方法的定义 在java中称为‘方法’,在C中称为‘函数’ java方法是语句的集合 用于执行一个功能 包含于类和对象中 可以被引用 方法的格式 访问权限 [修饰符] 返回值类型 方法名(参数列表){ ... 方法体 ..... -
Java基础教程之构造器与方法重载
2020-09-04 05:40:31主要介绍了Java基础教程之构造器与方法重载,构造器可以初始化数据成员,还可以规定特定的操作,本文还对方法重载做了介绍,需要的朋友可以参考下 -
在构造方法中打印一条消息"Hello Constructor",再为这个类添加一个重载构造方法,令其接收一个字符串参数...
2019-03-05 17:46:24class Print{ public Print(){ System.out.println(“Hello Constructor”); } public Print(String s){ ...this(参数)表示调用本类的...1.this调用本类的构造方法必须写在构造方法首行; 2.this调用构造方法...class Print{
public Print(){
System.out.println(“Hello Constructor”);
}
public Print(String s){
this();
System.out.println(“s”);
}}
需要注意:
this(参数)表示调用本类的构造方法。
1.this调用本类的构造方法必须写在构造方法首行;
2.this调用构造方法不能成环。 -
再为这个类添加一个重载构造方法,令其接收一个字符串参数,并在这个有参构造方法中把"Hello
2018-03-28 13:51:252.再为这个类添加一个重载构造方法,令其接收一个字符串参数 3.并在这个有参构造方法中把“Hello Constructor”和接收的参数一起打印出来 难点:匿名对象,this调用本类方法class one{ public one(){//无参构造...步骤:
1.创建一个带默认构造方法(即无参构造)的类,在构造方法中打印一条消息”Hello Constructor”
2.再为这个类添加一个重载构造方法,令其接收一个字符串参数
3.并在这个有参构造方法中把“Hello Constructor”和接收的参数一起打印出来
难点:匿名对象,this调用本类方法class one{ public one(){//无参构造(1) System.out.println("Hello Constructor"); } public one(String s){//方法重载,并接受一个字符串参数(2) this();//this调用本类方法(3.1) System.out.println(s);(3.2) } } public class Test{ public static void main(String[] args) { new one(args[0]);//匿名对象 } }
补充:
由于匿名对象不会有任何栈空间所指向,所以使用一次后就成为垃圾空间。
调用普通方法:this.方法名称(参数)
调用构造方法:this(参数) -
构造方法以及构造方法的重载
2019-07-19 17:19:34有参的构造方法需由自己手动创建,当自己手动创建有参构造方法时,如果需要无参构造方法,也需自己手动创建。构造器的名称应该与类名一致,JAVA通过new关键字来调用构造器,从而返回该类的实例,... -
java--创建一个带默认构造方法...再为这个类添加一个重载构造方法,令其接收一个字符串参数,将其一起打印出来
2018-10-14 11:50:25再为这个类添加一个重载构造方法,令其接收一个字符串参数,并在这个有参构造方法中把"Hello Constructor"和接收的参数一起打印出来。 //Person类 class Person{ //无参构造 public Person(){ Sys... -
构造方法、方法的重载
2021-07-26 08:07:21构造方法 1.概念:类中的特殊方法,用来创建对象。 new Dog(); 调用了Dog类中的无参构造 分为无参构造和有参构造 无参构造:每个类中都有一个默认的无参的构造方法 有参构造:主要是方便为属性赋值,参数名要见... -
构造方法及重载
2018-12-21 21:54:13构造器也叫构造方法(constructor),用于对象的初始化。构造器是一个创建对象时被自动调用的特殊方法,目的是对象的初始化。构造器的名称应与类的名称一致。Java通过new关键字来调用构造器,从而返回该类的实例,是一... -
java构造方法与重载
2019-02-20 22:05:19构造方法负责对象成员的...4.一个类可能没有构造方法,但一定有系统隐蔽无参的构造方法,也有多个构造方法(他们之间构成重载) 5.定义了有参数的构造方法,就会屏蔽掉系统无参构造方法 6.构造方法不能被继承 ... -
Java之创建一个带默认构造方法(即无参构造)的...再为这个类添加一个重载构造方法,令其接收一个字符串参数。
2018-06-20 08:06:47再为这个类添加一个重载构造方法,令其接收一个字符串参数,并在这个有参构造方法中把"Hello Constructor"和接收的参数一起打印出来。 效果如下: 附上代码: class Person{ public Person(){ ... -
Java的方法重载与构造方法及其重载
2020-12-07 23:15:31在讲Java的方法重载前,先说明一下什么是方法的签名! 方法的签名:方法名和参数列表 即 方法的签名=方法名+参数列表 一个类中,不可以有两个方法的签名 完全相同 ,即一个类中不可以有两个方法的方法名和参数列表... -
面向对象-构造方法2-构造方法中调用另一个重载构造方法
2016-05-22 14:23:29如何在构造方法中调用另一个重载的构造方法:案例: 编写汽车类 汽车类属性: int id; String brand; String color; int weight; 汽车类中的构造方法: Car(); Car(id,brand); Car(id,brand,color); Car(id,... -
Java构造方法 重载与重写
2019-04-18 18:10:44内容部分引自《Java语言程序设计》...构造方法的作用是初始化对象,也可以重载(即-可以有多个同名的构造方法,但是需要有不同的签名) 一个类可以不定义构造方法,类中会隐含创建一个方法体为空的构造方法(类中... -
构造方法的重载与好处(包含构造方法的注意事项)
2020-02-08 20:14:17构造方法的注意事项 以下代码17——19行是自定义的构造方法, 所以不会再默认赠送默认的构造方法,即第14、15行的代码 ,所以当使用无参数的构造方法的时候就会报错 ... -
构造方法及重载的详细解释:
2020-07-24 19:59:23构造方法及重载的详细解释: 一.构造方法定义格式: class 类名称{ 访问限 类名称(类型1 参数1,... 类型N 参数N){ 程序语句; //构造方法没有返回值 } } 二.注意: ①构造方法的名称必须与类名称一致 ②构造... -
java的构造函数可以重载吗?java构造函数重载例子
2021-02-12 11:24:31------------------构造---------------------什么是构造方法:1、是个方法2、在创建对象时,由new这个关键字自动调用,将属性初始化3、类中没写构造,java提供一个默认的无参构造,如果你写了,就以你写为准,默认的... -
java代码-构造方法重载
2021-07-16 13:36:28java代码-构造方法重载 -
TypeScript中的构造方法重载
2020-06-11 17:47:57Has anybody done constructor overloading in TypeScript. 是否有人在TypeScript中完成了构造函数重载。 On page 64 of th -
Frida Hook普通方法、构造方法、重载方法、构造对象参数、修改对象属性
2021-01-07 14:02:48普通方法(公开、私有、静态) 构造方法 重载方法 构造对象参数 修改对象属性 -
构造方法,方法重载——java面向对象
2017-04-27 22:20:22面向对象 构造方法 方法重载 java -
构造方法和方法重载的区别
2021-04-24 11:43:34构造方法三个条件:①、方法名和类名相同②、在方法名前面没有返回值类型的声明③、在方法中不能使用return语句方法重载三个条件:①、方法名相同,参数类型不同②、参数个数不同,参数顺序不同③、重载跟方法的... -
Java的类和对象 学生类构造方法和重载
2020-12-30 11:57:56编写一个Java程序片断,以定义一个表示学生的类Student。...另,编写相关的构造方法及实现构造方法的重载。 (2)定义一个测试类Test,其main方法中编写相应的代码来测试构造方法的调用情况。 ... -
Java中,什么是构造方法?什么是构造方法重载?什么是复制构造方法?
2019-08-28 21:02:56Java中构造方法重载和方法重载很相似。可以为一个类创建多个构造方法。每一个构造方法必须有它自己唯一的参数列表。 Java不支持像C++中那样的复制构造方法,这个不同点是因为如果你不自己写构造方法的情况下,Java... -
JAVA知识复盘004——构造方法能不能被重载,构造方法能不能被重写?
2018-09-20 14:17:20在回答这两个问题之前,首先先回顾:什么是构造方法?构造方法的特点是什么? 概述:构造方法存在于类中,给对象数据(属性)初始化; 特点:方法名与类名一样;无返回值无void; 默认构造方法:我们不创建一个... -
什么叫方法重载?构造方法可以重载吗?
2017-05-06 17:14:56同一个类中的2个或2个以上的方法可以一同一个名字,只是它们的参数声明不同即可,在这种情况下,该方法就被称为重载,这个过程称为方法重载。 构造方法可以重载。 -
java高级编程理论课构造方法与方法重载x_构造方法重载的定义
2020-02-03 00:14:55回顾对象由属性数据和方法函数组成类是具有相同属性...明this这这个overloaded重载超载overloaded method方法重载本章目标方法重载重载构造方法对象在内存中的存放形式this关键字Java中的方法在Java中函数直接定义即可