精华内容
下载资源
问答
  • 实例方法、方法、构造方法

    千次阅读 多人点赞 2019-11-19 14:11:00
    Java中的方法分为方法(用static修饰,也叫静态方法)和...构造方法,没有返回值(就是连void没有),方法名与类名一样 public static void myMethod();//方法 public void myMethod2();//实例方法 public ...

    Java中类的方法分为类方法(用static修饰,也叫静态方法)和实例方法(没有用static修饰,也叫非静态方法)
    实例方法,就是一般的方法
    类方法,有static修饰符,典型的主函数
    构造方法,没有返回值(就是连void都没有),方法名与类名一样

    public static void myMethod();//类方法
    public void myMethod2();//实例方法
    public Test(){}//构造方法,没有返回值,方法名与类名一样
    

    实例方法与类方法的区别:

    1、类方法是属于整个类,而不属于某个对象。
    2、类方法只能访问类成员变量,不能访问实例变量,而实例方法可以访问类成员变量和实例变量。
    3、在类方法中不能使用super、this关键字。
    4、类方法的调用可以通过类名.类方法和对象.类方法,而实例方法只能通过对象.实例方法访问。
    5、类方法只能访问类方法,而实例方法可以访问类方法和实例方法。
    6、类方法不能被覆盖,实例方法可以被覆盖。
    
    1. 构造方法—构造方法负责对象的初始化工作,为实例变量赋予合适的初始值。必须满足以下的语法规则:
    1、方法名与类名相同;
    2、不要返回类型(例如return、void等);
    3、不能被static、final、native、abstract和synchronized修饰,不能被子类继承
    

    1.1. 默认构造方法—默认构造方法时没有参数的构造方法,分为

    a.隐含的默认构造方法:public ClassName(){}
    b.程序显示定义默认构造方法:public Employee(){this("无名氏");}
    

    1.2. 重载构造方法—通过new创建一个对象后,在不同的条件下,对象可能会有不同的初始化行为,可以通过重载构造方法来表达对象的初始化行为。具体参考this关键字的用法。
    1.3. 子类调用父类的构造方法—父类的构造方法不能被子类调用,可以通过super语句调用父类的构造方法。例如:
    在这里插入图片描述
    用super调用父类的构造方法必须遵守以下规则:

    1. 子类的构造方法中不能直接通过父类的方法名调用父类的构造方法,使用super语句;
    2. 加入在子类的构造方法中有super语句,它必须作为构造方法的第一条语句(同this语句);
    

    1.4. 构造方法的作用域

    1、当前类的其他构造方法通过this语句调用;
    2、当前类的子类的构造方法通过super语句调用;
    3、在程序中通过new语句调用。
    

    1.5. 构造方法的private访问级别— 构造方法为private级别时,意味着只能在当前类中访问它:当前类的其他构造方法中可以通过this语句调用,此外还可以在当前类的成员方法中使用new调用。
    以下场合中,可以把类的所有构造方法声明为private:

    1、这个类中仅仅包含一些供其他程序调用的静态方法,没有任何实例方法。
    2、禁止这个类被继承。声明为private后,如果定义了它的子类,子类的方法中无法调用父类的任何构造方法。
    3、类需要把构造自身实例的细节封装起来,不允许其他程序通过new语句创建这个类的实例。提供静态方法。
    
    展开全文
  • java中所有的类都构造方法吗?

    千次阅读 2017-06-01 17:31:51
    如题,java中所有的类都包含构造方法吗?  构造方法的作用——初始化成员变量。  作者自己写的构造函数,自然是进行了合理的初始化操作。  如果默认加一无参的构造函数,外部就可能调用该构造函数,进而...

    如题,java中所有的类都包含构造方法吗?

           构造方法的作用——初始化成员变量。

           类作者自己写的构造函数,自然是进行了合理的初始化操作。

           如果默认都加一个无参的构造函数,外部就可能调用该构造函数,进而生成一个不符合作者预期的对象(成员变量未被合理初始化)。

    除了抽象类和接口不能实例化的情况,普通java类都有默认的无参构造方法,但当自定义了有参构造方法后,默认的无参构造方法失效,此时必须手动定义无参构造方法才能使其生效。

    展开全文
  • Java中构造方法

    万次阅读 多人点赞 2016-10-20 23:17:50
    new对象时,是用构造方法进行实例化的; 例如;Test test = new Test("a"); //Test("a");其中这就是构造函数,“a”为构造方法的形参;构造方法的方法名必须与类名一样。 构造方法没有返回类型,也不能...
    constructor;构造函数。

    在创建对象的时候,对象成员可以由构造函数方法进行初始化。

    new对象时,都是用构造方法进行实例化的;
    例如;Test test = new Test("a");
     //Test("a");其中这个就是构造函数,“a”为构造方法的形参;
    构造方法的方法名必须与类名一样。
    构造方法没有返回类型,也不能定义为void,在方法名前面不声明方法类型。
    构造方法不能作用是完成对象的初始化工作,他能够把定义对象时的参数传递给对象的域。
    构造方法不能由编程人员调用,而要系统调用。
    构造方法可以重载,以参数的个数,类型,或排序顺序区分。

    具体用法,代码实现。

    1;单个构造函数方法;’
    这里写图片描述
    这里写图片描述
    这里写图片描述

    2;多个构造函数方法
    (例子为;带参数与不带参数)
    这里写图片描述

    这里写图片描述

    3;关于继承类的构造方法的调用;
    先看事例;
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    我第一次看到结果的时候好惊讶的,怎么都调用了哈。看了知识点才知道。
    在Subtine的主方法中只调用子类构造方法,实例化子类对象并且在子类构造方法中,没有调用父类的构造方法的任何语句。但是在实例化对象时,它相应的调用了父类构造方法,在结果中还可以看到调用构造方法的顺序,首先是顶级,再继续往下直达本身类。也就是说实例化子类的时候,要首先实例化父类对象,然后在实例化子类对象,所以在子类构造方法调用父类构造方法前,父类已经实例化了。
    拓展一下。

    package text_4_1;
    
    public class Parent {
        Parent(int a){//就是将无参数构造方法改成有参数的。
            System.out.println("调用父类Parent构造方法" + a);
        }
    }
    
    package text_4_1;
    
    public class Subparent extends Parent{
        Subparent(){
            System.out.println("调用子类Subparent的构造方法");
        }
    }
    
    package text_4_1;
    
    public class Subtine extends Subparent{
        Subtine(){
            System.out.println("调用子类Subtine构造方法");
        }
    }
    
    
    package text_4_1;
    
    public class Main {
        public static void main(String[] args){
            Subtine subtine = new Subtine();
        }
    }
    

    这样的代码将会报错;//就是将父类Parent类无参数构造方法改成有参数的。

    Implicit super constructor Parent() is undefined. Must explicitly invoke another constructor
    //隐式的超级构造函数()是未定义的。必须显式地调用另一个构造函数 

    意思就是在子类调用构造函数时,必须先调用父类构造函数,因为无参数的构造函数,编译器会自动调用,也就是第一种情况不会报错。但是有参数的,就必须要利用Super的方法来调用。如果不进行调用那么将会报错。

    将Subparent类改成。
    package text_4_1;
    
    public class Subparent extends Parent{
        Subparent(){
            super(5);//调用了其父类就不会报错了。
            System.out.println("调用子类Subparent的构造方法");
        }
    }
    //备注一下,调用父类构造方法就是;super();//就ok了。
    

    还补充一点,关于构造方法的可扩展性;
    查看过源码的应该都发现过jdk的编码人员会在一个类中建立多个构造方法;然而他的作用就是提高可扩展性;
    这里写图片描述
    这么多构造方法,他们之间并且还有联系;通过this()来调用自己类的其他构造方法,来减少代码的复制,增大程序的可读性;
    这里写图片描述
    至于怎么来进行封装;举个例子;
    这里写图片描述
    这里写图片描述
    构造方法的可扩展性就表示在这里;
    可以多多个构造方法;根据不同的参数决定调用哪个;带来很大的可扩展性
    刚试了一下notepad++;然而直接爆出中文乱码,搞了好久才搞清楚;
    这里写图片描述

    原因是;国标码和ANSI之间的不兼容;
    这里写图片描述

    因为刚学,有什么不足的后期补上。
    望路过的大神,指点一二。

    展开全文
  • 如果本身没有写构造方法,为了让能拥有面向对象的能力,那么开发工具会默认添加一个"不可见的"构造方法,其实就是无参构造方法:class Car { public void color() { System.out.print("I ...

    首先,这个问题的答案是:错误。


    构造方法是用来创建一个实例的,或者说是创建一个对象。

    如果类本身没有写构造方法,为了让类能拥有面向对象的能力,那么开发工具会默认添加一个"不可见的"构造方法,其实就是无参构造方法:

    class Car
    {
    	public void color()
    	{
    		System.out.print("I have color!");
    	}
    }
    public class Test1{
    		public static void main(String[] args) {
    			Car car=new Car();             //调用自动产生的无参构造方法
    			car.color();
    		}
    	}

    结果为:

    I have color!

    但是,如果类本身创建了一个构造方法,那么系统将不会再为他创建无参构造方法。

    在有构造方法的时候:

    class Car
    {
    	int length;
    	Car(int length)
    	{
    		this.length=length;
    	}
    	public void color()
    	{
    		System.out.print("I have color!");
    	}
    }
    public class Test1{
    		public static void main(String[] args) {
    			Car car=new Car();           //会报错:The constructor Car() is undefined 即:该Car()构造法没有被定义
    			car.color();
    		}
    	}
    所以,在有构造方法的时候,系统不会再生成无参构造法,如果你想要,需要自己去创建。一般情况为了防止错误发生,类最好创建一个无参构造,原因下面会讲。
    class Car                        //父类
    {
    	int length;
    	Car(int length)
    	{
    		this.length=length;
    	}
    	public void color()
    	{
    		System.out.print("I have color!");
    	}
    }
    class BMW extends Car //子类,该行出现异常:Implicit super constructor Car() is undefined for default constructor. Must define an explicit constructor
    {           //原因:找不到父类的Car()构造方法。
    
    }
    public class Test1{
    		public static void main(String[] args) {
    			BMW car=new BMW();
    			car.color();
    		}
    	}

    异常原因:因为BMW没有构造方法,所以是默认无参构造,即

    BMW()
    {
    super();
    }

    其中super();是继承父类的无参构造,也是"不可视"的。super();会在每个子类构造方法中都调用,即使你将子类添加一个构造方法,依旧会有那个异常。

    解决办法:

    1. 在父类中手动添加一个无参构造方法。
    2. 在子类创建一个构造方法,然后用super调用父类的构造方法。


    展开全文
  • Java构造方法

    千次阅读 多人点赞 2019-09-09 19:26:39
    一个类都构造方法。当中没有定义构造函数时,系统会指定给该加上一个空参数的构造函数。这个是中默认的构造函数。当中如果自定义了构造函数,这时默认的构造函数就没有了。 Java中构造方法重载和方法...
  • 构造方法

    万次阅读 多人点赞 2019-05-21 15:54:08
    构造方法是专门用来创建对象的方法,当我们通过关键字new来创建对象时,其实就是调用构造方法。 格式 public 名称(参数类型 参数名称){ 方法体 ...构造方法不要写返回值类型,连void不写。 ...
  • Java有参构造方法和无参构造方法

    万次阅读 多人点赞 2018-10-29 11:16:29
    编写一个类时没有添加无参构造方法,那么编译器会自动添加无参构造方法;(如果自己添加构造函数,无论有参数或是没参数,默认构造函数将无效) 编写时添加了有参构造方法而未添加无参构造方法,那么编译器只认有参...
  • Java构造方法和子类构造方法

    千次阅读 多人点赞 2019-07-21 23:50:09
    构造方法是用于初始化一个新建的对象。 普通构造方法 方法名与类名相同 无返回类型 子类不能继承父类的构造方法 不能被static、final、abstract修饰(有final和abstract修饰的是不能被子继承的,abstract修饰的是...
  • 构造方法和方法重载

    千次阅读 2019-02-13 19:45:00
    前面几堂课已经学过了有关java语言中的有关知识,是对象的抽象定义,也是一种模板。...Java语言中会默认提供给编程者一个无参数的构造方法,在使用默认的构造方法时,不能给构造方法提供任何参数...
  • 类方法:1.... 3.JAVA语言中,中的类方法,在该加载到内存时,就分配了相应的入口地址,所以类方法不但可以被任何对象调用执行,也可以直接通过类名调用,入口地址直到程序退出的时候才会被取消。
  • Java有参构造方法和无参构造方法详解

    千次阅读 多人点赞 2020-12-09 12:05:16
    在之前我们要为一个对象赋值,先要创建好对象之后然后“对象名.属性名”或者调用属性的setter为属性赋值。但是在很多时候觉得这样做很麻烦,最好的做法是在创建对象的时候完成属性的初始化操作,此时需要使用到有...
  • java构造方法

    千次阅读 2019-05-01 14:56:49
    1 构造方法可以被重载,一个构造方法可以通过this关键字调用另一个...2 当一个类中没有定义任何构造方法,Java将自动提供一个缺省构造方法; 3 子类通过super关键字调用父类的一个构造方法; 4 当子类的某个构造...
  • 来自csdn论坛的一个帖子,问题如下: class A{ public int i=0; A(int m){ i=1; } } class B extends A{ B(int m){ i=2; } } public class E{ public static void main(String ar...
  •   创建一个对象的语句:①名称 ②对象名称 = ③new ④名称();   针对以上定义我们做出如下分析: ①任何对象应该有其对应的是对象的蓝图。 ②引用一块堆内存。 ③开辟堆内存空间。 ④构造...
  • python中子调用父类构造方法

    千次阅读 2014-06-02 02:03:27
    python和其他面向对象语言类似,每个可以拥有一个或者多个父类,它们从父类那里继承了属性和方法。如果一个方法在子类的实例中被调用,或者一个属性在子类的实例中被访问,但是该方法或属性在子类中并不存在,那么...
  • 谈谈Solidity中的构造方法

    千次阅读 2018-07-24 13:10:23
    在像Java这种面向对象的编程语言中,每个类都一个或多个构造方法,Solidity也有这么一个构造方法。今天这篇文章带大家了解一下Solidity中的构造方法。 Java中的构造方法 在Java中,如果某个未指定构造方法...
  • Java构造方法和析构方法

    千次阅读 2018-04-26 17:15:47
    Java构造方法类一个特殊的成员方法叫作构造方法,它的作用是创建对象并初始化成员变量。在创建对象时,会自动调用构造方法构造方法定义规则:Java中的构造方法必须与该具有相同的名字,并且没有方法的返回...
  • 首先答案是肯定的。 原因 Hibernate框架会调用这个默认构造方法来构造实例对象,即Class的newInstance方法...反射的Class.forName(“className”).newInstance()需要对应的提供一个无参构造方法,必须有个无参的...
  • 构造方法与析构方法区别

    千次阅读 2016-08-19 14:54:45
    一个特殊的成员方法叫作构造方法,它的作用是创建对象并初始化成员变量。在创建对象时,会自动调用构造方法构造方法定义规则:Java 中的构造方法必须与该具有相同的名字,并且没有方法的返回类型...
  • 局部变量是指在方法体内声明的变量,其作用域是从声明处开始至它所在的最小块的语句结束处,另外,方法中的形参、for语句中定义的循环变量也是属于局部变量。 1.实例变量:在体内且在方法体外定义的变量,且...
  • 构造方法的特点:1:方法名称和同名2:不用定义返回值类型3:不可以写retrun语句4:构造方法可以被重载作用:给对象那个初始化构造方法的细节:当一个类中没有定义构造函数时,系统会默认添加一个无参的构造方法。...
  • Kotlin的主构造方法和从构造方法

    千次阅读 2019-07-31 01:51:07
    目录前言正文区别 前言 这知识点不太清晰,写文章记录一下。 正文 区别 声明位置不同:主构造器通常是主要而简洁的初始化方法,在体外部声明;从构造器在体内部声明。 ...
  • 其中的成员变量有静态变量和实例变量两种,的成员方法有构造方法、静态方法(含静态主方法)和一般的方法(主要有对成员变量的set和get方法,以及一些行为动作)。  是具体对象生成的一个模板,
  • Swift-指定构造方法和便利构造方法

    千次阅读 2017-01-06 17:40:25
    指定构造方法和便利构造方法 /* 1、指定构造方法和便利构造方法(Designated Initializer and Convenience Initializers) 便利构造:类型(针对class) */ print("1、指定构造方法和便利构造方法") class AB...
  • Java基本语法:java中方法与构造方法。 首先我们要先弄明白什么是是Java中最基本的组成单元,Java将描述一类事物的属性(状态)和功能(行为)封装在一起,属性用成员变量来刻画;功能通过方法来体现。...
  • Java默认构造方法

    万次阅读 多人点赞 2017-08-05 22:29:16
    在java语言中,每个至少有一个构造方法。如果程序中没有显式定义任何构造方法, 那么java语言将自动提供一个隐含的默认构造方法。只要程序中已经显式定义了构造方法。 那么java语言将不再提供隐含的默认构造方法...
  • 关于Java反射机制中通过getConstructors方法获取中全部构造方法顺序的问题问题引入 近日学习java反射机制的过程中了解到的getConstructors()方法,此方法用于取得全部构造方法,在上机测试过程发现了一些问题,...
  • 首先我们要知道构造方法一个特殊成员,它会在实例化对象时被自动调用 子类中,它在调用父类中空参数的构造函数。因为子类继承父类,会继承到父类中的数据,所以必须要看父类是如何对自己的数据进行初始化的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 752,985
精华内容 301,194
关键字:

任何一个类都还有构造方法