精华内容
下载资源
问答
  • java构造函数总结
    千次阅读
    2021-03-06 18:02:48

    构造函数总结

    概念:    创建对象时由JVM自动调用的函数

    作用:    在创建对象的时候给对象的成员变量赋值;

    写法:

    修饰符:可以用访问权限修饰符(public、private等)修饰;不能用static修饰;

    返回值类型:没有返回值类型,连void都没有;

    函数名:必须和类名完全一样;

    参数列表:可以重载,具体根据要求而定;

    return语句:有,但是一般都不需要写;

    执行过程:

    创建对象时,JVM遇到new关键字,首先要到堆内存中开辟对象空间;然后在对象空间中为成员变量分配空间,赋默认值;

    然后再根据new关键字后面的内容,调用相应的构造函数进栈执行;等到构造函数执行结束,对象创建完成;

    默认构造函数:

    所有类中都至少有一个构造函数,如果一个类中没有书写构造函数,编译器就会帮我们添加一个无参的构造函数,这个构造函数就是默认构造函数;

    一旦类中书写了构造函数,就不会再有默认构造函数;

    使用细节:

    构造函数可以调用一般函数;

    一般函数不能调用构造函数;

    构造函数可以调用构造函数,不能通过函数名调用,必须通过this关键字调用;

    在构造函数中使用this语句调用其他构造函数,this语句必须写在构造函数的第一行;

    构造函数之间相互调用,不能出现交叉调用(递归调用);

    1、什么时候需要使用构造函数?

    只要创建对象,都要使用构造函数;

    2、什么时候需要自定义构造函数?

    如果希望在创建对象时就给成员变量赋值,就需要自定义构造函数;

    3、使用构造函数,可以在创建对象的时候就给对象的成员变量赋初始值,那么,有了构造函数,还需要提供get和set方法吗?

    需要;因为构造函数只能在创建对象的时候赋值一次;如果以后想要改变这个值,就需要用到set函数;如果需要获取被封装的值,就需要用到get函数;

    构造函数和一般函数的区别

    1、从书写格式上看:

    a)         构造函数:没有返回值类型,连void都不能写;构造函数的函数名必须和类名一样;不能用static关键字修饰;

    b)        一般函数:必须有一个返回值类型(是和构造函数最主要的区别);一般函数名不要和类名一样;可以用static修饰,也可以不要;

    如果一个函数函数名和类名一样,是否是构造函数,就要看有没有返回值类型;没有,就是构造函数;

    2、从调用方式上看:

    a)         构造函数:创建对象时由JVM调用的;一般函数不能调用构造函数;

    b)        一般函数:哪里需要哪里就可以调用;构造函数里面也可以调用一般函数;

    3、从作用上看:

    a)         构造函数:主要用来在创建对象的时候,给对象的成员变量赋值用的;

    b)        一般函数:实现某个具体功能;

    4、从一个对象可以调用次数上看:

    a)         构造函数:只有创建对象时会调用一次;

    b)        一般函数:没有次数限制;

    更多相关内容
  • JAVA入门——构造函数赋值问题

    千次阅读 2019-10-14 00:48:00
    直接赋值 public class student { String name; // 不能有private int age; student(){} // 不可缺少 student(String name,int age){ this.n...
    • 直接赋值
    public class student {
        String name;                            // 不能有private
        int age;
    
        student(){}                           // 不可缺少
        student(String name,int age){
            this.name =name;                 //  可有可无
            this.age = age;
        }
                                             // 无get()set()
        public void show() {
            System.out.println("学生爱学习");
        }
    }
    
    
    • 利用set()赋值,get()接收
    public class Teacher {
        private String name;                   //  private可有可无
         private int age;
    
        public Teacher(){}                  // 必有空参,不可缺少
        public Teacher(String name,int age){
            this.name = name;                //  可有可无
            this.age = age;
        }
                                            //  用set赋值 必有get()set()
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
        public void show(){
            System.out.println("老师爱讲课");
        }
    }
    
    
    • 构造函数赋值
    public class xiaozhang {
        private String name;    // 可有可无
        private int age;
    
        public xiaozhang() { }                       // 必有空参,不可缺少
        public xiaozhang(String name, int age) {
            this.name = name;                        // 必有this.变量
            this.age = age;
            System.out.println(name);              // 若无set()get(),则必有输出sout
            System.out.println(age); // 若有set get,则test中必有System.out.println(xz.getName());
            System.out.println("校长爱转圈");
        }
    }
       /* public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;*/
    
    
    • 测试类test
    public class practice {
        public static void main(String[] args) {
            // 直接赋值,不能有private
            student stu = new student();
            stu.name = "小明";
            stu.age = 15;
            System.out.println(stu.name);
            System.out.println(stu.age);
            stu.show();                              // 对象名调用函数
            System.out.println("————————");
            //用set() get()赋值
            Teacher t = new Teacher();
            t.setName("李老师");
            t.setAge(45);
            System.out.println(t.getName());        // 用set赋值用get接收
            System.out.println(t.getAge());
            t.show();
            System.out.println("————————");
            //用构造函数赋值
            xiaozhang xz = new xiaozhang("张校长",60);
                         //System.out.println(xz.getName());
                         //System.out.println(xz.getAge());
        }
    }
    
    
    展开全文
  • C++中一般创建对象,拷贝或赋值的方式有构造函数,拷贝构造函数赋值函数这三种方法。下面就详细比较下三者之间的区别以及它们的具体实现 1.构造函数 构造函数是一种特殊的类成员函数,是当创建一个类的对象时,它...
  • 构造构造器的作用:创建对象初始化对象的属性说明:如果没有显式的定义类的构造器的话,则系统默认提供一个空参的构造器定义构造器的格式: 权限修饰符 类名(行参列表){}一个类中定义的多个构造器,彼此构成重载一旦...

    构造器

    构造器的作用:

    创建对象

    初始化对象的属性

    说明:

    如果没有显式的定义类的构造器的话,则系统默认提供一个空参的构造器

    定义构造器的格式: 权限修饰符 类名(行参列表){}

    一个类中定义的多个构造器,彼此构成重载

    一旦我们显示的定义了类的构造器之后,系统就不再提供默认的空参构造器

    一个类中,至少会有一个构造器

    构造器的特征:

    它具有与类相同的名称

    它不声明返回值类型。(与声明为void不同)

    不能被 static、final、synchronized、abstract、native修饰,不能有return语句返回值

    public class PersonTest {

    public static void main(String[] args) {

    // 创建构造器对象:new + 构造器

    Person p = new Person();

    p.eat();

    Person p1 = new Person("Tom");

    System.out.println(p1.name);

    }

    }

    class Person{

    //属性

    String name;

    int age;

    //构造器

    public Person() {

    System.out.println("Person()........");

    }

    public Person(String n) {

    name = n;

    }

    public Person(String n, int a) {

    name = n;

    age = a;

    }

    public void eat() {

    System.out.println("人吃饭");

    }

    public void study() {

    System.out.println("人可以学习");

    }

    }

    运行结果:

    2170c7bd65bf1f3eef182967f8791cfa.png

    属性赋值先后顺序

    默认初始化

    显式初始化

    构造器中赋值

    通过 "对象.方法" 或 "对象.属性" 的方式赋值

    public class UserTest {

    public static void main(String[] args) {

    User u = new User();

    System.out.println(u.age); // 1

    User u1 = new User(2);

    System.out.println(u1.age); // 2

    User u2 = new User(2);

    u2.setAge(3);

    System.out.println(u2.age); // 3

    }

    }

    class User{

    String name;

    int age = 1;

    public User() {

    }

    public User(int a) {

    age = a;

    }

    public void setAge(int a) {

    age = a;

    }

    }

    展开全文
  • 首先默认的午餐构造函数会调用父类的无参构造函数; 在父类的无参构造方法中,调用后为成员变量初始化,Person的name从null变为Person,最后调用sayName方法; 由于子类自己已经复写了这个方法,那么就调用子类的...

    做题遇到这样一个题:

    class Person {
        public String name = "Person";
        public Person() {
            sayName();
        }
        public void sayName() {
            System.out.println(name);
        }
    }
    class Student extends Person {
        public String name = "Student";
        public void sayName() {
            System.out.println(name);
        }
    }
    class aaa {
        public static void main(String[] args) {
            new Student();
        }
    }
    

    以为会调用自己的sayName,从而输出Student,实际上输出null

    首先默认的午餐构造函数会调用父类的无参构造函数;
    在父类的无参构造方法中,调用后为成员变量初始化,Personnamenull变为Person,最后调用sayName方法;
    由于子类自己已经复写了这个方法,那么就调用子类的自己的这个方法;
    但是此时子类还没有对自己的name字段进行初始化,故而输出的为null
    调用完毕后,子类的name字段初始化为Student

    因为调用是从子类的构造->父类的构造,由父类的构造去调用子类的重写方法,那么调用的时候子类还没来得及对其成员变量name进行初始化并赋予初值。

    展开全文
  • 主要介绍了不同Java泛型构造函数的详解,因为对象是应用类型,对象赋值是指向同一个对象,所以如果需要保存对象某个时刻的状态,就需要构造函数来new一个新的对象。下面我们来详细了解一下吧
  • package complex_number; import java.util.*;.../*构造函数,ComplexNumber,将实部和虚部置0*/ public ComplexNumber(){ m_dRealPart=0; m_dImaginPart=0; } 请问在构造函数的时候为什么会错?
  • java构造函数怎么写

    千次阅读 2021-03-01 07:47:12
    java构造函数怎么写发布时间:2020-06-29 11:50:19来源:亿速云阅读:114作者:Leahjava构造函数怎么写?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易...
  • (若文章有不正之处,或难以理解的地方,请多多谅解,欢迎指正)构造函数与默认构造函数构造函数构造函数,主要是用来在创建对象时初始化对象,一般会跟new运算符一起使用,给对象成员变量赋初值。cl...
  • 这类构造方法有什么用: { this.x=x; this.y=y; }
  • Java构造函数中调用构造函数

    千次阅读 2019-07-22 23:44:39
    Java中,当为一个类创建了多个构造函数时,有时想在一个构造函数中调用另一个构造函数以减少代码量。这时可以使用this关键字来实现。通常,当使用this关键字时,它意味着“这个对象”或者“当前对象”,并且它自身...
  • 构造函数属性赋值不用this案例

    千次阅读 2021-03-17 12:57:08
  • JAVA 构造函数及其重载

    千次阅读 2019-04-13 23:34:31
    以上给出了不同构造函数的重载,不同构造的同一个类的实例化对象,在实例化对象时系统就会自动调用构造函数,给相应得值进行初始化赋值;不同的构造进行不同得初始化,不同的赋值 5、如果类中没有定义构造函数,...
  • 构造函数,拷贝构造函数,移动构造函数,拷贝赋值运算符,移动赋值运算符应用场景 #include using namespace std; class ConstructTest{ public: ConstructTest(){ cout; dim_=0; base_= nullptr; }; ~ConstructTest...
  • //父类class Fu{//父类构造方法Fu(){this.getNum();}public void getNum(){System.out.println("sdasdads");}}//子类class Zi extends Fu{private int num=4;...//结果0System.out.println("子类构造函数中"+thi...
  • 众所周知,在java里是不能给构造函数写返回值的,如果在低版本的编译器定义一个构造器写上返回值可能会报错,高版本里面他就是一个普通的方法。 可是如果构造函数没有返回值,那么比如Test t = new Test()我们new一...
  • 小伙伴们知道构造函数吧,那你们知道构造函数是否能重载吗?这次让我们来详细了解一下构造函数和重载吧。------------------构造---------------------什么是构造方法:1、是个方法2、在创建对象时,由new这个关键字...
  • https://blog.csdn.net/vipmao/article/details/51530954,我觉得讲的非常好,学习到了构造函数的最大作用就是创建对象时完成初始化,当我们在new一个对象并传入参数的时候,会自动调用构造函数并完成参数的初始化。...
  • 题目为构造函数重载,可以想到之前一般函数的重载,概念之间总是相互联系的。某一个事物是什么,有什么特点介绍完了之后,下面就是怎么用(初始化),什么时候用?二.什么时候定义构造函数呢?在描述事物时,该事物一...
  • Java 构造函数的详解

    万次阅读 多人点赞 2016-07-14 14:54:44
    那么我们在java里面怎么在对象一旦创建就赋值呢? 1.构造方法的作用: 构造方法作用:对对象进行初始化. 如图: 2.构造函数与普通函数的区别: (1). 一般函数是用于定义对象应该具备的功能。...
  • Java 8 lambda 方法/构造函数引用

    千次阅读 2020-11-21 17:57:38
    方法引用让你可以重复使用现有的方法定义,并像Lambda一样传递它们。在一些情况下, 比起使用Lambda表达式,它们似乎更...之后(使用方法引用和java.util.Comparator.comparing): inventory.sort(comparing(Apple::g.
  • Applicatorvacuum::Applicatorvacuum(EVENT_ID_E targetAddr):ApplicatorBase(targetAddr)//子类显示调用父类的带参构造函数 { } Applicatorvacuum::~Applicatorvacuum() { } 子类创建对象 ApplicatorBase *appBase...
  • 快捷写出有参无参构造函数:右键代码空白处 spring这个eclipse改代码后要ctrl s刷新错误才会消失 javaclass public person01(String lastname, int aage, String email) { super(); this.lastname = lastname; ...
  • java中的构造函数

    千次阅读 2020-12-06 20:11:28
    构造函数也称构造方法,是java中的一种特殊的函数 2.作用于特点 作用:创建新对象时给对象初始化 特点:函数名与类名相同,没有返回值,不可以写return,可以有多个构造函数(参数列表不同),各个构造函数之间属于...
  • 使用构造器时需要记住:1.构造器必须与类同名(如果一个源文件中有多个类,那么构造器必须与公共类同名)2.每个类可以有一个以上的构造器3.构造器可以有0个、1个或1个以上的参数4.构造器没有返回值5.构造器总是伴随着...
  • Java 带参数的构造函数

    千次阅读 2021-03-01 07:17:50
    Java 带参数的构造函数接下来,我们准备为大家介绍“带参数的构造函数”。那么,我们为什么要使用带有参数的构造函数呢?首先,我们可以举一个例子,例如:在一个游戏里面,假设它有多个不同类型的角色,而不同的...
  • 构造函数就是在我们定义一个类似时就已经默认存在的. 例如: class Perso{ private String name; //私有属性 名字 private int age; //私有属性 年龄 //功能 public void speak() { System.out.println(name+...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 200,567
精华内容 80,226
关键字:

java构造函数赋值

java 订阅
友情链接: huayuan.rar