㈠ java什么时候要设置有参构造
如果是final变量,就不行,比如:
class Test {
private final int i;
public Test(int i) {
this.i = i;
}
public void setI(int i) {
this.i = i;//错误,无法通过编译
}
}
㈡ JAVA一个类写了有参的构造方法,还会默认有一个无参的构造方法吗
不会,如果类中你已经写了有参构造方法,那么之前的默认无参构造方法就需要自己手动写上去。
㈢ java 有参构造函数
第一种是set方法赋值。
第二种是有参构造方法赋值。
他们的区别是:当对象被new的时候,
第一种首先进入的是set方法里面在从set方法里面进行赋值。
第二种是直接给参数赋值。
㈣ java 中有参构造与无参构造区别
无参构造器和有参构造器都是一样的,只不过一个有参数一个没有而已。一般创建类的时候,如果你不写构造器,那么这个类有一个默认的无参构造器。如果你写了一个有参的构造器,那么那个无参的构造器就被覆盖了!不过经常我都会多写一个无参的构造器,这样new对象的时候比较方便
㈤ java有参构造的,参数代表什么意思
和你写带参数的方法是一样的,参数就是你要传入的变量。类当然也可以传了,类不也是一种变量类型吗
㈥ Java 带参数构造函数
因为在一个类中,默人有一个没有带参数的构造函数;
在上面的这个类中,有自定义了一个带参数的构造函数。
当你在测试类中写的时候,实际上也有两个构造属性的方法。一个没有参数,一个有参数,所以必须程序员自己指定。故没有提示。
只能程序员自己添加。
㈦ java 构造方法可以有参数吗
构造方法,是你在构造一个对象时调用的方法,使用一个无参的构造方法就好比你创造了一个空的壳,具体的数据要等到你使用的时候再把值放到你创造出来的壳里面,而你也可以选择调用一个有参的构造函数,在创建的时候就把部分的值给他加上去。重载是指方法名字一样,而方法里面的参数的类型或数量不同。要注意的是单单返回值不同不能算是重载的。
㈧ Java中如何在无参构造方法中调用有参构造
一般正常的都是参数多的调用参数少的。有参数的调用无参数的居多。
当然你要无参调用的参的也可以。
你用无参,调用有参的。那你有参的参数你需要怎么传呢。当然如果换一个角度也可以。
我手写下。没经过IDE的。提供下思路。我有两种思路,写同一个功能。
public class Person{
private String name;
private int age;
//无参
public Person(){
this.name="张三";
this.age=20;
}
//有参
public Person(String name){
this.name=name;
}
//多参
public Person(String name,int age){
this(name);//调用一个参数的构造方法
this.age=age;
}
}
这是一种写法比较常用的方法。写第一种。用上面的例子直接写
public Person(){
this("张三",20);//调用有参构造方法。设置默认值。和第一种方法功能一样
}
public Person(String name,int age){
this.name=name;
this.age=age;
}
为了程序易读性。一般。参数的扩展和构造方法的调用都是有一定的规律的。
有参调无参,多参调少参。。扩展参数的时候,最好保持原来的顺序。
㈨ Java编程题: 编写一个Student类,包含name和age属性,提供有参构造方法
//*********************Student
import java.util.Objects;
public class Student {
public String name;
public int age;
Student(){}
Student(String name,int age){
this.name=name;
this.age=age;
}
public String toString(){//重写toString()
return "name: "+name+" age: "+age;
}
public boolean equals(Object o) {//重写equals()
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Student student = (Student) o;
return age == student.age && Objects.equals(name, student.name);
}
public int hashCode() {//重写hashCode()
return Objects.hash(name)+age;
}
}
//********************StudentTest
import java.util.HashSet;
public class StudentTest {
public static void main(String[] args) {
HashSet<Student> hs=new HashSet<>();
Student s1=new Student("zs",19);//s1
Student s2=new Student("zs",19);//s2
Student s3=new Student("ls",19);//s3
hs.add(s1);//加入集合
hs.add(s2);//
hs.add(s3);//
//s1,s2,equals()返回true,s2不会加入集合
for(Student it:hs) {//遍历HasSet
System.out.println(it);
}
}
}