-
python调用父类的构造方法_在子类中应该如何调用父类的构造方法
2020-12-08 08:22:57在子类中应该如何调用父类的构造方法在Java中,子类可以继承父类的非私有成员变量和成员方法(不是以private关键字修饰的)作为自己的成员变量和成员方法。但是,不能继承父类的构造方法,那么在子类中应该如何调用...在子类中应该如何调用父类的构造方法
在Java中,子类可以继承父类的非私有成员变量和成员方法(不是以private关键字修饰的)作为自己的成员变量和成员方法。但是,不能继承父类的构造方法,那么在子类中应该如何调用父类的构造方法?今天百分网小编为大家整理的在子类中应该如何调用父类的构造方法,仅供学习参考,欢迎大家阅读浏览!
答:子类可以调用由父类声明的`构造方法。但是必须在子类的构造方法中使用super关键字来调用。其具体的语法格式如下:
super([参数列表]);
例如,在动物类Animal中添加一个默认的构造方法和一个带参数的构造方法,具体代码如下:
1public class Animal{
2 String skin = "不清楚"; // 成员变量
3 public Animal () { // 默认构造方法
4 }
5 public Animal(String strSkin) { // 带参数的购造方法
6 skin = strSkin;
7 }
8}
这时,如果想在子类Dog中使用父类的带参数的构造方法,则需要在子类Dog的构造方法中通过以下代码进行调用。
1public class Dog extends Animal{
2 public Dog (){
3 super("白色"); //使用父类的带参数的构造方法
4 }
5 public static void main(String[] args) {
6 Dog dog=new Dog();
7 System.out.println("小狗的毛是"+dog.skin);
8 }
9}
运行上面的代码将显示如图1所示的运行结果。
专家点评
在Java中,子类不能继承父类的构造方法,但是如果子类没有编写调用父类构造方法的代码,那么Java将自动在子类的构造方法中添加super();语句,用于调用父类的无参构造方法。所以说即使您没有手动指定调用父类的构造方法,父类的无参构造方法也将会被执行。因此,在Java中,如果想调用父类中无参的构造方法,则可以使用super();语句调用,也可以不使用super();语句调用。但是如果要调用带参数的构造方法,则需要使用super()方法。
【在子类中应该如何调用父类的构造方法】相关文章:
-
调用父类的构造方法
2021-01-19 09:44:561、使用super调用父类的构造方法,必须是子类构造方法的第一个语句。 使用this调用重载的构造方法,也必须是构造方法的第一个语句。 可以看到,程序中已经标红,这是不行的。解决这个问题,可以自己定义一个init...1、使用super调用父类的构造方法,必须是子类构造方法的第一个语句。
使用this调用重载的构造方法,也必须是构造方法的第一个语句。
可以看到,程序中已经标红,这是不行的。解决这个问题,可以自己定义一个init方法,来初始化成员变量,通过调用init方法解决这个问题。如下所示:
2、如果父类里面没有一个缺省的构造方法(没有任何参数的构造方法),那么子类必须通过super关键字,在构造方法的第一行调用一个有参数的构造方法,把参数传进去。相反,如果父类里有一个缺省的构造方法,在子类中不需要去做上边的这些调用,java会帮我们去调用,父类中没有参数的构造方法。有点绕,需要多琢磨琢磨。// 父类中缺省的构造方法被注释了 // public MerchandiseV2() { // this("无名", "000", 0, 1, 1.1); // } public Phone() { super("无名", "000", 0, 1, 1.1); // 子类必须通过super关键字,调用一个有参的构造方法。 init(4.5, 4.6, 6, 128, "Uknown", "Uknown"); }
-
php不调用父类构造_php实现parent调用父类的构造方法与被覆写的方法
2021-01-17 19:26:52本文实例讲述了php实现parent调用父类的构造方法与被覆写的方法。分享给大家供大家参考。具体分析如下:覆写:被重新设计。...parent 调用父类的构造方法要引用一个类而不是对象的方法,可以使用 ...本文实例讲述了php实现parent调用父类的构造方法与被覆写的方法。分享给大家供大家参考。具体分析如下:
覆写:被重新设计。
在子类中定义构造方法时,需要传递参数给父类的构造方法,否则我们得到的可能是一个构造不完整的对象。
要调用父类的方法,首先要找到一个引用类本身的途径:句柄(handle),PHP为此提供了parent关键字。
parent 调用父类的构造方法
要引用一个类而不是对象的方法,可以使用 ::(两个冒号),而不是 ->。
所以, parent::__construct() 以为着调用父类的 __construct() 方法。
修改上篇《使用类继承解决代码重复等问题》中的代码,让每个类只处理自己的数据:
复制代码 代码如下:
header('Content-type:text/html;charset=utf-8');
// 从这篇开始,类名首字母一律大写,规范写法
class ShopProduct{ // 声明类
public $title; // 声明属性
public $producerMainName;
public $producerFirstName;
public $price;
function __construct($title,$firstName,$mainName,$price){
$this -> title = $title; // 给属性 title 赋传进来的值
$this -> producerFirstName= $firstName;
$this -> producerMainName = $mainName;
$this -> price= $price;
}
function getProducer(){ // 声明方法
return "{$this -> producerFirstName }"."{$this -> producerMainName}";
}
function getSummaryLine(){
$base = "{$this->title}( {$this->producerMainName},";
$base .= "{$this->producerFirstName} )";
return $base;
}
}
class CdProduct extends ShopProduct {
public $playLenth;
function __construct($title,$firstName,$mainName,$price,$playLenth){
parent::__construct($title,$firstName,$mainName,$price);
$this -> playLenth= $playLenth;
}
function getPlayLength(){
return $this -> playLength;
}
function getSummaryLine(){
$base = "{$this->title}( {$this->producerMainName},";
$base .= "{$this->producerFirstName} )";
$base .= ":playing time - {$this->playLength} )";
return $base;
}
}
// 定义类
class BookProduct extends ShopProduct {
public $numPages;
function __construct($title,$firstName,$mainName,$price,$numPages){
parent::__construct($title,$firstName,$mainName,$price);
$this -> numPages= $numPages;
}
function getNumberOfPages(){
return $this -> numPages;
}
function getSummaryLine(){
$base = "{$this->title}( {$this->producerMainName},";
$base .= "{$this->producerFirstName} )";
$base .= ":page cont - {$this->numPages} )";
return $base;
}
}
?>
每个子类都会在设置自己的属性前调用父类的构造方法。基类(父类)现在仅知道自己的数据,而我们也应该尽量避免告诉父类任何关于子类的信息,这是一条经验规则,大家想想如果某个子类的信息应该是”保密“的,结果父类知道它的信息,其它子类可以继承,这样子类的信息就不保密了。
parent 调用父类被覆写的方法
parent 关键字可以在任何覆写父类的方法中使用。覆写一个父类的方法时,我们并不希望删除父类的功能,而是拓展它,通过在当前对象中调用父类的方法可以达到这个目的。
看看上面的代码,可以发现两个子类中 getSummaryLine() 方法中重复了许多代码,我们应该利用 ShopProduct 类中已经存在的功能,而不是重复开发:
复制代码 代码如下:
// 父类:ShopProduct
function getSummaryLine(){
$base = "{$this->title}( {$this->producerMainName},";
$base .= "{$this->producerFirstName} )";
return $base;
}
// 子类:CdProduct
function getSummaryLine(){
$base = parent::getSummaryLine();
$base .= ":playing time - {$this->playLength} )";
return $base;
}
// 子类:BookProduct
function getSummaryLine(){
$base = parent::getSummaryLine();
$base .= ":page cont - {$this->numPages} )";
return $base;
}
我们在父类 ShopProduct 中为 getSummaryLine() 方法完成了”核心“功能,接着在子类中简单的调用父类的方法,然后增加更多数据到摘要字符串,方法的拓展就实现了。
希望本文所述对大家的php程序设计有所帮助。
-
php不调用父类构造_php中子类如何调用父类的构造方法呢?
2021-01-17 19:26:50通常情况下,继承的子类不会调用父类的构造方法,那么当我们需调用子类中的构造函数时,如何操作呢?下文将一一道来,如下所示:实现思路:在子类的构造函数中使用parent::__construct()即可调用父类的构造方法例:php...摘要:
下文讲述php中调用继承类的构造函数的方法分享,如下所示;
通常情况下,继承的子类不会调用父类的构造方法,
那么当我们需调用子类中的构造函数时,如何操作呢?
下文将一一道来,如下所示:
实现思路:
在子类的构造函数中使用
parent::__construct()
即可调用父类的构造方法
例:
php中子类调用父类的构造函数的示例分享
class parentClass {
function __construct() {
print "parent类中构造方法" . PHP_EOL;
}
}
class tmpClass1 extends parentClass {
function __construct() {
//调用父类构造函数
parent::__construct();
print "tmpClass1类中构造方法" . PHP_EOL;
}
}
class tmpClass2 extends parentClass {
function __construct() {
print "tmpClass2类中构造方法" . PHP_EOL;
}
}
$obj1 = new parentClass();
$obj2 = new tmpClass1();
$obj3 = new tmpClass2();
?>
-
php实现parent调用父类的构造方法与被覆写的方法
2021-01-20 00:13:34parent 调用父类的构造方法 要引用一个类而不是对象的方法,可以使用 ::(两个冒号),而不是 ->。 所以, parent::__construct() 以为着调用父类的 __construct() 方法。 修改上篇《使用类继承解决代码重复等问题》... -
java调用父类方法 super_Java super关键字:super调用父类的构造方法、利用super访问父类成员...
2021-02-12 22:55:47由于子类不能继承父类的构造方法,因此,要调用父类的构造方法,必须在子类的构造方法体的第一行使用 super() 方法。该方法会调用父类相应的构造方法来完成子类对象的初始化工作。在以下情况下需要使用 super 关键字... -
java子类怎么调用父类的构造方法_java子类怎么调用父类的构造方法
2021-03-01 06:34:04顶java的确有其局限性,但应该不是你所说的这个场景应该是你代码写的有问题那我这个场景应该怎么写呢你这种情况,应该用接口,而...如你所云:/*用创建Boy的构造方法造就出一个男孩,但其引用可以是Person类。*/Pers... -
php 子类父类构造方法_php中子类如何调用父类的构造方法
2021-03-22 20:04:55php中子类调用父类的构造方法的方法是:可以通过parent关键字来实现。parent是指向父类的指针,本质上就是代表父类这个类,而不是父类的对象。具体调用方法是:【parent::__construct()】。parent是指向父类的指针,... -
Java子类的构造方法为什么要先调用父类的构造方法
2020-10-03 11:03:24Java中规定:在实例化子类对象时,必须先调用父类的构造方法,再调用子类的构造方法(先有父母再有孩子)。且必须在子类构造方法的第一行调用父类方法。 一般在子类中显式的调用父类构造方法,若没有显式调用的调用... -
Java super关键字:super调用父类的构造方法、利用super访问父类成员
2019-07-07 21:55:39由于子类不能继承父类的构造方法,因此,要调用父类的构造方法,必须在子类的构造方法体的第一行使用 super() 方法。该方法会调用父类相应的构造方法来完成子类对象的初始化工作。 在以下情况下需要使用 super ... -
Java_24 显式调用父类的构造方法_父类中有多个调用方法_父类(01)
2020-04-23 14:33:13Java_24 显式调用父类的构造方法_父类中有多个调用方法_父类(01) //可以在子类中指定调用父类中的哪个构造方法,在父类中有多个构造方法的时候,就特别有用. //给父类添加多个构造方法 package my; public ... -
java子类怎么调用父类的构造方法_Java里子类调用父类构造方法问题
2021-02-13 01:44:43在Java中,子类的构造过程中,必须调用其父类的构造函数,是因为有继承关系存在时,子类要把父类的内容继承下来,通过什么手段做到的?答案如下:当你new一个子类对象的时候,必须首先要new一个父类的对像出来,这个... -
子类继承和调用父类的构造方法
2017-01-03 19:38:49子类继承和调用父类的构造方法 1.如果子类没有定义构造方法,则调用父类的无参数的构造方法,. 2.如果子类定义了构造方法,不论是无参数还是带参数,在创建子类的对象的时候,首先执行父类无参数的构造方法,然后执行自己... -
php parent list,php实现parent调用父类的构造方法与被覆写的方法
2021-03-26 12:09:33本文实例讲述了php实现parent调用父类的构造方法与被覆写的方法。分享给大家供大家参考。具体分析如下:覆写:被重新设计。...parent 调用父类的构造方法要引用一个类而不是对象的方法,可以使用 ... -
使用super调用父类的构造方法
2019-10-05 04:13:16package ... /* * 使用super调用父类的构造方法 */public class TestSuper02 { public static void main(String[] args) { IPhoneX iPhoneX1 = new IPhoneX(10); IPhoneX iPhoneX2... -
Java_25 显式调用父类的构造方法_父类中有多个调用方法_子类(02)
2020-04-23 14:35:04Java_24 显式调用父类的构造方法_父类中有多个调用方法_子类(02) //可以在子类中指定调用父类中的哪个构造方法,在父类中有多个构造方法的时候,就特别有用. //在子类中指定调用父类中的哪个构造方法,使用super()... -
子类对象构建调用父类的构造方法
2011-07-20 00:28:32程序中描述了子类对象构建调用父类的构造方法,以及类变量和实例变量创建的不同过程 -
引用父类成员的关键字是java_Java super关键字:super调用父类的构造方法、利用super访问父类成员...
2021-03-13 12:34:15由于子类不能继承父类的构造方法,因此,要调用父类的构造方法,必须在子类的构造方法体的第一行使用 super() 方法。该方法会调用父类相应的构造方法来完成子类对象的初始化工作。在以下情况下需要使用 super 关键字... -
parent 调用父类的构造方法与被覆写的方法
2012-08-04 12:06:25parent调用父类构造方法与被覆写的方法 覆写:被重新设计。 在子类中定义构造方法时,需要传递参数给父类的构造方法,... parent 调用父类的构造方法 要引用一个类而不是对象的方法,可以使用 ::(两个冒号 -
C++关于子类调用父类的构造方法的问题
2017-05-22 15:15:18最近一个小问题甚是迷惑我,让我思考了很...1.first of all,这一点很重要,子类初始化时是一定要调用父类的构造方法的,有参,无参,系统默认的,这一点不要弄乱了, 系统默认的无参构造函数与父类自己定义的无参的构造函数不 -
Java子类调用父类的构造方法
2020-05-20 20:44:47一、自动调用父类无参构造方法 //这是父类 public class SuperClass { //父类无参构造方法 public SuperClass(){ System.out.println("父类无参构造方法"); } //父类带参构造方法 public SuperClass(String ... -
python之调用父类的构造方法(26)
2019-11-12 14:42:30# # @File : # @Author: dianxiaoer # @Date : 2019/11/12 # @Desc :调用父类的构造方法 # 网上的一段代码 # class Employee : # def __init__ (self, salary): # self.salary = salary # def work (self): # ... -
java中实例化子类时会不会调用父类的构造方法?
2017-04-17 22:10:35子类不会继承父类的构造方法(这里说的不能继承是说,构造方法不能在子类中被覆写,有时候说的“继承”父类的构造方法是说子类的构造方法调用父类的构造方法。),但是子类在实例化对象时:如果子类的构造器没有显示... -
子类继承和调用父类的构造方法 (转)
2014-11-05 21:04:00子类继承和调用父类的构造方法1.如果子类没有定义构造方法,则调用父类的无参数的构造方法,.2.如果子类定义了构造方法,不论是无参数还是带参数,在创建子类的对象的时候,首先执行父类无参数的构造方法,然后执行自己的...