ansn001 20:19:31
不可以
构造函数是针对于类的
类可以有构造函数
main是一个特殊的静态方法
摩羯座
主函数也在一个类里面啊
ansn001 20:20:04
那是局部分类
部分类
那个构造函数也是在类里的
单独在方法里写构造函数是错的。
构造函数的本质就是来初始对象的
摩羯座
public class GG {
public static void main(String a[])
{
GG cc=new GG();
。。。。。 }
那这里的new GG();是在干什么?
ansn001 20:21:37
。。。。。这个是创建对象呀。这个不是构造函数
摩羯座
那我写到main之外,public类之内可以不?
ansn001 20:21:52
构造函数应该是这样的
public class GG{
public GG(){}
}
摩羯座
他也是在调用构造函数噻
ansn001 20:22:13
可以。它就成为一个成员变量,或者叫字段
它是在调用构造函数。可是它现在是在创建一个对象
我们说了构造函数是作用于类的初始化的
摩羯座
估计也没多大必要是吧?
ansn001 20:22:52
啥???没必要?
摩羯座
写个构造函数在main之外,public类之内
ansn001 20:23:54
这主要看你有没有需求
摩羯座
创建一个对象肯定就调用了它的构造函数嘛
ansn001 20:24:05
一般不写在带有Main的类中有构造函数
这个类也叫主类
摩羯座
我从未见过public类里有构造函数。。。
ansn001 20:24:39
。。。呵呵,那是你还没学到
这样吧。我小个小demo
摩羯座
虽没学到,但是我想到了,哈哈
ansn001 20:25:20
恩。等我一分钟
摩羯座
好
ansn001 20:26:57
public class Student {
public String name;
public int age;
//无参构造函数
public Student(){}
public Student(String name,int age){
this.name=name;
this.age=age;
}
public static void main(String[] args) {
Student stu1=new Student();
Student stu2=new Student("1",1);
Student stu3=new Student();
stu3.name="1";
stu3.age=11;
}
}
前面两个构造函数
一个无参一个带参
具体用途你看main方法
第一种。我们不知道学生信息,可以这样new
第二种,我直接带名字和年龄
第三种,也是带名字和年龄。不过要赋值
显示第二种比第三种,方便
而且关键的是如果我现在一个系统。要求学生必须带名字和年龄的话
摩羯座
哦,那看来public类里还是有个默认的无参构造函数
ansn001 20:28:45
我的Student里只有
public Student(String name,int age){
this.name=name;
this.age=age;
}其他的都无效
是的
系统自动提供一个默认的构造函数
前提是你自己没写构造函数
一定你自己手写的话,这个默认构造函数失效
比如
public String name;
public int age;
public Student(String name,int age){
this.name=name;
this.age=age;
}
public static void main(String[] args) {
Student stu1=new Student();
Student stu2=new Student("1",1);
}
摩羯座
我的Student里只有
public Student(String name,int age){
this.name=name;
this.age=age;
}其他的都无效
ansn001 20:29:37
此时第一个new会报错
摩羯座
这是什么意思?
我的Student里只有
public Student(String name,int age){
this.name=name;
this.age=age;
}其他的都无效这是什么意思?
ansn001 20:30:26
public String name;
public int age;
public Student(String name,int age){
this.name=name;
this.age=age;
}
public static void main(String[] args) {
Student stu1=new Student();
Student stu2=new Student("1",1);
}
发错了
看这个
public String name;
public int age;
public Student(String name,int age){
this.name=name;
this.age=age;
}
public static void main(String[] args) {
Student stu1=new Student();//会报错
Student stu3=new Student("1");//会报错
Student stu2=new Student("1",1);//必须完全匹配才OK
}
摩羯座
嗯,这个看得懂
ansn001 20:31:09
在严谨的程序中会提供各种各校的构造函数
一般不会有空的构造函数
一是防止因为手误少写参数
导致程序意外错误
第二个减少代码
摩羯座
哦,谢谢啦