黑马程序员技术交流社区
标题: 关于继承 [打印本页]
作者: 马上都有 时间: 2014-4-12 15:47
标题: 关于继承
public class ceshi9
{
public staticvoid main(String[] args)
{
GoodStudenta3 = new GoodStudent("fwefew");
}
}
class Person
{
Person()
{
System.out.println("类Person构造方法一被调用");
}
Person(Stringa)
{
System.out.println("类Preson构造方法二被调用");
}
Person(Stringa,String b)
{
System.out.println("类Preson构造方法三被调用");
}
}
class Student extends Person
{
Student()
{
System.out.println("类Student构造方法一被调用");
}
Student(Stringa)
{
System.out.println("类Student构造方法二被调用");
}
Student(Stringa,String b)
{
System.out.println("类Student构造方法三被调用");
}
}
class GoodStudent extends Student
{
GoodStudent()
{
System.out.println("类GoodStudent构造方法一被调用");
}
GoodStudent(Stringa)
{
System.out.println("类GoodStudent构造方法二被调用");
Studentaa = new Student("fwefewf","6534165");
Personbb = new Person("fsdfew");
}
GoodStudent(Stringa,String b)
{
System.out.println("类GoodStudent构造方法三被调用");
}
}
//为什么不能创建对象,然后 对象.方法 调用构造函数 如:
//Person bb = new Person();
//bb.Person();
作者: Kelvinhu 时间: 2014-4-12 16:02
本帖最后由 Kelvinhu 于 2014-4-12 16:11 编辑
出错的地方帮你改好了。
- public class ceshi9
- {
- public static void main(String[] args)
- {
- GoodStudent a3 = new GoodStudent("fwefew");
- }
- }
- class Person
- {
- Person()
- {
- System.out.println("类Person构造方法一被调用");
- }
- Person(String a)
- {
- System.out.println("类Preson构造方法二被调用");
- }
- Person(String a,String b)
- {
- System.out.println("类Preson构造方法三被调用");
- }
- }
- class Student extends Person
- {
- Student()
- {
- System.out.println("类Student构造方法一被调用");
- }
- Student(String a)
- {
- System.out.println("类Student构造方法二被调用");
- }
- Student(String a,String b)
- {
- System.out.println("类Student构造方法三被调用");
- }
- }
- class GoodStudent extends Student
- {
- GoodStudent()
- {
- System.out.println("类GoodStudent构造方法一被调用");
- }
- GoodStudent(String a)
- {
- System.out.println("类GoodStudent构造方法二被调用");
- Student a1 = new Student("fwefewf","6534165");
- Person b = new Person("fsdfew");
- }
- GoodStudent(String a,String b)
- {
- System.out.println("类GoodStudent构造方法三被调用");
-
- }
- }
复制代码
调试结果:- 类Person构造方法一被调用
- 类Student构造方法一被调用
- 类GoodStudent构造方法二被调用
- 类Person构造方法一被调用
- 类Student构造方法三被调用
- 类Preson构造方法二被调用
复制代码
//为什么不能创建对象,然后 对象.方法 调用构造函数 如:
//Person bb = new Person();
//bb.Person();
。。搞错了 这个是构造函数,在new的时候默认调用一次。
作者: linweiwen 时间: 2014-4-12 16:02
本帖最后由 linweiwen 于 2014-4-12 16:11 编辑
对楼主的问题理解有误,该回复删除。
作者: Kelvinhu 时间: 2014-4-12 16:12
。。。我觉得你回答的是正确的。。。怎么删除掉了。。
作者: Kelvinhu 时间: 2014-4-12 16:19
补充一下。。。构造器(构造函数)总是伴随着new操作符的执行被调用,而不能对一个已经存在的对象调用构造器来达到重新设置实例域的目的。。。
corejava上面看的。
作者: linweiwen 时间: 2014-4-12 16:24
我是看教学视频过程中,休息回复一下,
没有看代码就开始回复了,
然后复制到Eclipse里面看,
好像你的疑惑不是我回答的地方,
懒得再研究,也就把回复删除了,你明白了就行了。
作者: leon_hm 时间: 2014-4-12 16:24
构造方法就是得用new这种方式来调用。
作者: 马上都有 时间: 2014-4-13 22:42
谢谢,多多支持哦
作者: 马上都有 时间: 2014-4-13 22:44
我们是解决问题,不必纠结这些
作者: wyqs92 时间: 2014-4-14 23:05
因为构造函数是在对象一创建时就被调用了,而且它只执行一次。所以当你再次调用时,就出错了。你要想得到person()这个构造函数,只需要Person bb = new Person()这一步就可以了。
作者: skill20 时间: 2014-4-16 14:41
先理解什么是构造函数?构造函数是在创建对象的时候对对象初始化,构造函数名和类名是一样的,而类里的不同的方法都不与类名同名,所以你可以用对象调用方法,而不能调用构造函数。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |