我的朋友们,我的项目有三节课
主类:
public class Main {
public static void main(String[] args) {
Student s1 = new Student();
}
}
public class Student {
private String name;
private int id;
private Date date = new Date();
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
}
public class Date {
private int d;
private int m;
private int y;
public int getD() {
return d;
}
public void setD(int d) {
this.d = d;
}
public int getM() {
return m;
}
public void setM(int m) {
this.m = m;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
}
首先,当我在main
类中实例student
时,java使结构如下所示:structure
我的意思是,当我们在main
类中实例student
类时,java逐行读取student
类,例如:字符串名称,int id,Date Date=new Date();
因为date
中有3个变量,所以我们可以说,当我们实例student
类时,我们有5个变量。
例如,Student s1=new Student();
我们有字符串name
、intid
、intd
、intm
、inty
来表示s1
。我的问题是为什么我们不能直接访问s1.y
或s1.m
或s1.d
?
例如,对于initialize name,我们可以使用以下代码:s1.setname();
,但是为什么我们不能使用以下代码:s1.setdate().setm()
???
执行以下代码时
Student s1 = new Student();
您实际上正在创建2个对象:
student
对象,您可以通过S1
引用访问该对象。date
对象,与上面的student一起自动创建。那是两个分开的物体。student
只有3个属性(name、id、date),而date
object也有3个属性(d、m、y)。
要访问对象的属性,需要使用它的引用。因为s1
引用Student对象,所以可以使用它访问此对象的成员。但是,为了访问date
对象的成员,您需要获得它的引用,该引用存储在Student对象的date
属性中。
因此,使用s1.getdate()
可以获得这个引用,然后可以使用它访问日期的成员(即它的set***方法)
我正在标准中寻找对这一事实的正式解释。我找到了3.9.1/9所说的,并试图用该部分给出解释。 第3.9.1/9节,N3797: void类型有一组空值。void类型是不完整的类型,无法完成。它用作不返回值的函数的返回类型。任何表达式都可以显式转换为cv void类型(5.4)。void类型的表达式只能用作表达式语句(6.2)、逗号表达式的操作数(5.18)以及?的第二个或第三个操作数:(5.16)
问题内容: 为什么我们不能对Java类的方法内部声明的变量使用访问说明符? 问题答案: 因为这没有意义。方法中声明的变量是该方法的局部变量。即它们不能在方法之外访问。修改变量的声明将实现什么?
问题内容: 以下Java代码无法编译。 为什么?在没有先声明的情况下,没有代码路径可导致程序将1分配给该路径。 我想到的范围可能仅限于第一条陈述,但后来我不明白为什么。如果我真的不想不必要地声明以提高性能怎么办?我不喜欢声明后不使用变量。 (您可能想争论一下,我不可以在第二条语句中简单地声明b ,在这种情况下,请想象一下它可能在其他地方处于循环中。) 问题答案: 为什么?如果没有先声明,没有代码路
问题内容: 为什么不能在Java中将类声明为静态类? 问题答案: 只有嵌套的类可以是静态的。这样,你可以使用嵌套类而无需外部类的实例。
我声明了一个自定义trait 的数组,以便在Rust中试验多态性,但是编译器似乎在第一个元素的子类型上进行类型推断: 编译器抱怨第一个元素是< code>Cat而不是其他元素: 向数组中添加类型也不能解决问题。因为这一次我得到了更多的错误:
问题内容: 在这里只能是最终的。为什么?如何在不保留为私有成员的情况下重新分配方法? 单击该如何返回? 问题答案: 如注释中所述,其中一些在Java 8中变得无关紧要,在Java 8中final可以隐式使用。但是,只能在匿名内部类或lambda表达式中使用有效的最终变量。 这基本上是由于Java管理闭包的方式。 创建匿名内部类的实例时,该类中使用的任何变量都将通过自动生成的构造函数复制其值。这样避