精华内容
下载资源
问答
  • 在学习群里面看到一位同学问——一个类可以定义多个空参数的构造方法吗 我当是在想应该不行的吧,然后看到那个问问题的同学说:“可以再定义局部的空参构造方法”,然后自己看了一下关于局部的知识确实阔以,...

    在学习群里面看到一位同学问——一个类中可以定义多个空参数的构造方法吗
    我当是在想应该不行的吧,然后看到那个问问题的同学说:“可以再定义局部类的空参构造方法”,然后自己看了一下关于局部类的知识确实阔以,话不多说,上代码。

    package e01;
    
    public class jvav {
    
    	public static void main(String[] args) {    
    		Outer outer=new Outer();
    		Outer.Inner inner = outer.new Inner(); // 创建内部类对象
    		inner.show1(); // 测试在成员内部类中访问外部类成员变量和方法
    		outer.test2(); // 测试在外部类中访问内部类成员变量和方法
    	}
    }
    
    //定义外部类Outer
    class Outer {
    	Outer(){
    		System.out.println("调用了外部类的无参构造函数");
    	}
    	int m = 0; // 定义外部类的成员变量
    	// 定义外部类成员方法
    	void test1() {
    		System.out.println("外部类成员方法");
    	}
    	// 定义成员内部类Inner
    	class Inner {
    		Inner(){
    			System.out.println("调用了内部类的无参构造函数");
    		}
    		int n = 1;
    		// 1、定义内部类方法,访问外部类成员变量和方法
    		void show1() {
    			System.out.println("外部类成员变量m="+m);
    			test1();
    		}
    		void show2(){
    			System.out.println("内部类成员方法");
    		}
    	}
    	// 2、定义外部类方法,访问内部类变量和方法
    	void test2() {
    		Inner inner = new Inner();
    		System.out.println("内部类成员变量n="+inner.n);
    		inner.show2();
    	}
    }
    

    看完上述代码就该就清楚了吧,我生成的的是成员内部类,那估计局部内部类应该也行,不得不说他们是真滴牛

    展开全文
  • 在python定义多个构造函数

    万次阅读 2018-09-20 23:56:33
    当我们在编写一个类时,我们希望用户可以通过多种不同的方式来创建一个类实例,而不是局限于_init_()方法提供的一种。这个时候,就需要我们创建多个构造函数了。     下面是...

        当我们在编写一个类时,我们希望用户可以通过多种不同的方式来创建一个类实例,而不是局限于_init_()方法提供的一种。这个时候,就需要我们创建多个构造函数了。

        下面是一个简单的实例:

    import time
     
    class Date:
        #主构造函数
        def __init__(self, year, month, day):
            self.year = year
            self.month = month
            self.day = day
     
        #可选构造函数
        @classmethod
        def today(cls):
            t = time.localtime()
            return cls(t.tm_year, t.tm_mon, t.tm_mday)
    

        使用示例:

    >>> a = Date(2012,12, 21)
    >>> b = Date.today()
    >>> print(a.year, a.month, a.day)
    2012 12 21
    >>> print(b.year, b.month, b.day)
    2018 9 13
    

        在可选构造函数中,我们定义了一个类方法,类方法的第一个参数(cls)指代的就是类本身。类方法会用这个类来创建并返回最终的实例。使用类方法的另一个好处就是在继承的时候,保证了子类使用可选构造函数构造出来的类是子类的实例而不是父类的实例。

        也许我们会倾向于在_init_()方法中使用*args和**kwags根据参数数量来进行判断如何执行构造函数。以下为实例:

    import time
     
    class Date:
        def __init__(self,*args):
            if len(args)==0:
                t = time.localtime()
                args = (t.tm_year, t.tm_mon, t.tm_mday)
            self.year, self.month, self.day = args
    

        尽管这样也是行的通的,但是这样往往会导致代码更加脆弱而且难以维护。而且在实现时也不会展示出那么有用的帮助字符串(没有参数名称)。此外,在创建实例时,代码也会变得不那么清晰。看看下面的对比:

    >>> a = Date(2012,12,31)#明确指定日期
    >>> b = Date()#信息模糊,指示不明
    >>> c = Date.today()#清晰,指定今日
    

    在这里插入图片描述

    展开全文
  • 定义多个构造函数

    千次阅读 2019-08-18 23:18:09
    如果想让用户能够以多种方式创建实例,而不局限于__init()__方法,可以用下面的解决方案 import time import time class Date: def __init__(self, year, month, day): self.year = year self.month = month ...

    问题

    如果想让用户能够以多种方式创建实例,而不局限于__init()__方法,可以用下面的解决方案

    
    import time
    
    
    class Date:
        #primary constructor
        def __init__(self, year, month, day):
            self.year = year
            self.month = month
            self.day = day
    
        # alternate constructor
        @classmethod
        def today(cls):
            t = time.localtime()
            return cls(t.tm_year, t.tm_mon, t.tm_mday)
    
        def __repr__(self):
            return "year:%s, month:%s, day:%s" % (self.year, self.month, self.day)
    
        def __str__(self):
            return self.__repr__()
    
    
    if __name__ == '__main__':
        a = Date(2019, 8, 10)
        b = Date.today()
        print(a)
        print(b)
    
    

    讨论

    1.类方法的一大主要用途就是定义其它可选的构造函数。
    2.类方法的一个关键特性是把类作为其接收的第一个参数(cls).
    3.类方法中会用到这个类来创建并返回最终的实例
    4.当定义一个有着多个构造函数的类时,应该让__init()__尽可能的简单(例如做一些赋值操作外,其它什么都不做;如果需要的话,可以在其备选的构造函数中选择实现理高级的操作)

    展开全文
  • Python中实现多个构造器

    千次阅读 2019-01-08 13:34:41
    实现多个构造器可以使用方法 import time class Date: """方法:使用方法""" # Primary constructor def __init__(self, year, month, day): self.year = year self....

    实现多个构造器,可以使用类方法

    import time
    
    class Date:
        """方法一:使用类方法"""
        # Primary constructor
        def __init__(self, year, month, day):
            self.year = year
            self.month = month
            self.day = day
    
        # Alternate constructor
        """方法二"""
        @classmethod
        def today(cls):
            t = time.localtime()
            return cls(t.tm_year, t.tm_mon, t.tm_mday)
    
    a = Date(2012, 12, 21) # Primary
    b = Date.today() # Alternate
    print(b.year)
    

    类方法的一个主要用途就是定义多个构造器。它接受一个 class 作为第一个参数(cls)。

    展开全文
  • Kotlin中的可见性修饰符:public,protected...private:表示只在这个类(以及它的所有成员)之内可以访问; protected:在当前及其子类内访问; internal:在同一模块内使用; Kotlin中定义: // 定义...
  • class 梯形{ float 上底,下底,高; 梯形(float x,float y,float h) { 上底=x; 下底=y; 高=h; } float 计算面积() { float 面积; 面积=(上底+下底)*高/2.0
  • Student 定义一个无参的构造方法和一个接收两个参数的构造方法,两个参数分别为姓名和 成绩属性赋值 在测试中创建两个 Student 对象,一个使用无参的构造方法,然后调用方法给姓名和成绩赋值, 一个...
  • class TestA {  public TestA(String s)  {  System.out.println("A");  System.out.println(s);  } ...所以我们在一个类定义了自己的带参数的构造方法的时候,必须把无参构造函数定义一下。
  • scala 类定义构造函数与继承

    千次阅读 2016-11-09 23:52:04
    1.scala中如何定义类scala中定义类的方式很简单class Point(xc:Int,yc:Int)上面这行代码就定义一个类 ...2.的构造方法定义可以多个构造参数。与java中不同的是,scala名称后直接加上构造函数
  • java中一个中能如何声明多个构造方法
  • 定义一个汽车 package leiDeDingYi_leiDeShiYong; public class Car {//定义一个类 String color;//成员变量 车的颜色 int wheelNumber;//成员变量 车的轮胎的数量 float price;//成员变量 车的价格 String...
  • 构造器()

    千次阅读 2016-02-29 15:42:38
    构造器的关键字是init,今天我们就谈谈这init关键字,在创建或者结构体时,必须为所有的存储属性设置初始值,我们可以定义的时候直接设置默认值。或者在构造器中设置值。实例存储的初始化大致分为如下几: ...
  • 文章目录包包(package)的作用JDK中主要的包包的命名规范导入(import)方法方法的使用方法的重载(Overload)以及方法的重写(Override)对象(Object)和(class)面向过程和面向对象对象的本质对象和的概念定义...
  • Kotlin构造函数及多个构造函数

    万次阅读 2018-05-07 17:57:44
    Kotlin构造函数首先 强调一下 如果下面这样行代码是构造函数的话 class ClassName(name:String){}那么每一个Kotlin只有一个构造函数 没有多个构造函数其实由于代码什么的都是源于国外的 所以在翻译过程中多说...
  • 构造方法的定义: 构造方法是一种特殊的方法,它是一个同名且没有返回值类型的方法。对象的创建就是通过构造方法来完成,其功能主要是完成对象的初始化。当实例化一个对象时会自动调用构造方法。构造方法和...
  • 初学者可能会有一个疑问。因为定义格式和的建造格式不一样。后来搞懂了。定义一个类,则有一个默认的与类名同名的构造函数,它建造的对象的成员,然后返回这个对象。...当然,也可以个性化定义个构造函数。
  • Dart中的——初始化列表、命名构造器、factory构造器、常量构造器构造器私有化、get和set方法、枚举 1、调用成员变量——使用"."来调用成员变量或方法 var p = Point(2, 2); // Set the value of the instance ...
  • 这里会出错,因为自己定义了构造方法,所以java不再提供默认构造方法,可以在梯形自己定义梯形(){}这个构造方法 梯形 tx=new 梯形(12, 13, 14); tx.计算面积(); } }
  • Java构造器

    千次阅读 2017-12-26 16:41:59
    2.一个类可以定义多个构造器,但是构造器的参数列表必须不同; 3.如果我们没有手动定义构造器,则java系统会提供一个默认的构造器给我们使用。一旦我们定了构造器,则系统会把构造器收回; 4.构造器的作用:实例化...
  • 同时注意枚举不能派生子的默认修饰符为final),其原因基于它只有private构造器,那为什么要设计成这样呢?其实很容易想明白,所谓枚举就是有包含有固定数量实例(并且实例的值也固定)的特殊,如果其...
  • 文章目录题目main.cppstudent.cppstudent.hcourse.cppcourse.h运行结果 题目 //*****************************************************************************************************.../*1) 掌握定义,根据具
  • Java 必须包含一个一个以上的构造方法 构造方法用于构造的实例对象,Java语言通过new关键字来调用构造方法,从而返回该的实例。 构造方法是一个类创建对象的根本途径,如果一个类没有构造方法,这个...
  • 的基本定义语法,使用关键字class去定义一个类,语法格式如下:访问控制符 class 类名{  成员变量声明  构造器声明  成员方法声明 } 一.访问控制符 包含:public ,private ,protected 二.类名要有意义,且首...
  • C++构造器和析构器

    千次阅读 2016-05-25 07:39:40
    1.我们知道构造器若没有定义,编译器会自动生成一个默认无参的构造器,一旦自定义了构造器,那么就不再会有自动生成,一般情况下最好自定义中带有无参的构造器,不然bug是不可避免的,建议是定义带默认参数的
  • 这样就定义了最简单的一个类了,什么都没有的,没有头和体。(没有体,可以省略花括号) 接下来定义一个正常的: class Person public constructor(name: String,age: Int)/*主构造...
  • 今天,看视频里下子加了3个构造方法,惊奇了,仔细看了一下。 选中报错类名,按快捷键:alt+shift+s,会出现下图: ...eclipse会默认“select all”,所以如果快的话1秒钟就能添加多个构造方法。
  • Kotlin构造器
  • 为何要把构造函数定义为private

    千次阅读 2011-10-10 21:56:49
    通常我们都将构造函数的声明置于public区段,假如我们将其放入private区段中会发生什么样的后果?... 我们知道,当我们在程序中声明一个对象时,编译器为调用构造函数(如果有的话),而这个调用将通常是外部的,也
  • C# 构造器-实例构造器,类型构造器

    千次阅读 2006-09-26 00:09:00
    对于可验证的代码,CLR要求每个(引用类型)至少定义一个实例构造器。(可以是公开或私有) 在创建一个实例时系统将执行以下三个步骤:1)首先为改实例分配内存;2)然后初始化对象的附加成员(即方法表指针和一个...
  • PHP多个构造方法使用

    千次阅读 2016-12-29 16:22:13
    PHP的构造方法与Java的有所不同,不能有多个构造方法,只能有个构造方法,若想要实现类似Java的构造方法的使用,可以使用下面的办法来实现: //PHP构造方法使用 class Test{ function __construct(){ echo 'Test...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 636,546
精华内容 254,618
关键字:

一个类可以定义多个构造器