Java-Java新建对象 语法 的疑问

发布于 2017-07-08 09:21:45 字数 537 浏览 1399 评论 2

对于Java中新建一个对象,大家可能再熟悉不过了,如:

public class Person {

private String name;

public void setName(String name) {
this.name = name;
}

public String getName() {
return name;
}

public String aaa() {
return "AAA";
}

public static void main(String[] args) {
Person p = new Person();
p.setName("123");
System.out.println(p.getName());
}
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

瑾兮 2017-10-21 06:51:53

这个问题涉及到了两个基本语法.
1. new A (){XXXX} 这个语法中,xxxx是对A原有方法的覆写.评论中Thread的例子,即可证明 这个我相信楼主是没有争议的.
2. new A () {{XXXXXX}}, 那么大括号中又嵌的{XXXXX}是什么呢, 答: 是java语法中的构造块. java语法中,构造类时需要调用构造函数,如果有构造块,还需要调用构造块(相当于构造函数的补充). 如果不太明白,去百度一下java的构造块和静态块的知识.
3. 所以new A () {{XXXXXX}}语法,就是覆写了A的构造块. 那么new 的时候,肯定就会执行改块代码了. 另外这个写法不怎么好, 除非你明确知道A里面没有构造块, 你才这么做.否则你可能破坏了原有逻辑.

浮生未歇 2017-08-15 01:19:58

Person p = new Person(){....};
实际上相当于
class PersonChild extends Person{
......
}
Person p = new PersonChild ();

至于为什么打印123,是因为构造块的原因
aaa 是因为你覆写了aaa()这个方法

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文