A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© HaiMing 中级黑马   /  2016-3-20 00:06  /  1035 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 HaiMing 于 2016-3-20 11:35 编辑

class Fu{
        private String name;
        private int age;
        public Fu(String name,int age ){
                this.name=name;
                this.age=age;
        }
        public void setName(String name) {
                this.name=name;
        }
        public void setAge( int age) {
                this.age=age;
        }
        public String getName() {
                return name;
        }
        public int getAge() {
                return age;
        }
        public void show() {
                System.out.println (name+age);
        }
}        
class Son {
        String addr;
        public Son () {
        }
        public Son(String name,int age ) {
                super(name,age);
        }
}
class Demo{
        public static void main(String[] args){
                Son  s =new Son ();
               
        }
}

11 个回复

倒序浏览
。。。。。。。。。到底想表达啥
回复 使用道具 举报
是要说继承的问题吗?
回复 使用道具 举报
this代表本类对象的引用,或者可以叫做当前对象的引用.谁调用它,它就代表谁.
super代表本类对象的父类的引用.用到super就必然有继承关系.
回复 使用道具 举报
陈文广 发表于 2016-3-20 10:50
this代表本类对象的引用,或者可以叫做当前对象的引用.谁调用它,它就代表谁.
super代表本类对象的父类的引用 ...

就是上面的代码,如果父类没有的成员变量值  只有子类有 要怎样通过方法调用出来
回复 使用道具 举报
陈文广 发表于 2016-3-20 10:50
this代表本类对象的引用,或者可以叫做当前对象的引用.谁调用它,它就代表谁.
super代表本类对象的父类的引用 ...

还有就是 父类没有无参构造  只有有参构造的话,在测试类中,子类能调用父类的午餐构造吗?

回复 使用道具 举报
本帖最后由 陈文广 于 2016-3-20 12:01 编辑
HaiMing 发表于 2016-3-20 11:40
还有就是 父类没有无参构造  只有有参构造的话,在测试类中,子类能调用父类的午餐构造吗?

...

父类如果没有无参构造,想要在测试类中创建子类对象成功,有两种方式1.子类无参构造方法显示的调用父类的有参构造方法super(数据类型  成员属性,  数据类型   成员属性  .....)把值赋值给父类的成员属性这样也这可以把父类的初始化完成  .
2.通过子类的无参构造方法显示的调用本类的有参构造方法this(数据类型  成员属性,  数据类型   成员属性 ......file:///C:\Users\ADMINI~1\AppData\Local\Temp\SGPicFaceTpBq\4412\05BCDE46.giffile:///C:\Users\ADMINI~1\AppData\Local\Temp\SGPicFaceTpBq\4412\05BCDE46.gif);间接的访问父类的有参构造方法
然后子类的有参构造方法要求写成这样 public Son(数据类型  成员属性,  数据类型   成员属性 ..) {
    super(数据类型  成员属性,  数据类型   成员属性.....);
}


回复 使用道具 举报
不错,学习了!!
回复 使用道具 举报
陈文广 发表于 2016-3-20 11:49
父类如果没有无参构造,想要在测试类中创建子类对象成功,有两种方式1.子类无参构造方法显示的调用父类的有 ...

谢谢  我们的 技术班长 ..... 给你 100个技术分
回复 使用道具 举报
<<:左移        左边最高位丢弃,右边补齐0(正负数都适合)
        *  >>:右移        最高位是0,左边补齐0;最高为是1,左边补齐1(正数适合,负数不适合)
        *  >>>:无符号右移 无论最高位是0还是1,左边补齐0(正数适合,负数不适合,负数右移会变成正数)


这些完全看不懂啊



按位取反  ~  是什么意思?(  符号位要不要取反)
回复 使用道具 举报
另请参阅:
父类没有无参构造方法,子类怎么办?
        * super解决:用super(....)显式调用父类的有参构造,如:super(name,age);->super("zs",30);
        * this解决:通过this调用本类的有参构造,然后在本类的有参构造里,又调用了父类的有参构造,相当于间接调用父类的有参构造.
* B:注意事项
        * super(…)或者this(….)必须出现在构造方法的第一条语句上,只能出现其一


总之,子类对象初始化的时候,必须访问父类的构造方法,但注意不是一定要访问父类的无参构造,访问父类的有参构造也是可以的.只是在默认情况下 系统会走父类的无参构造方法,如果父类只有有参构造,那么我们就只能访问父类的有参构造了.
这样我们就必须在子类的构造方法中明确指出调用父类的有参构造,这样就不会走父类的无参构造了
回复 使用道具 举报
this解决:通过this调用本类的有参构造,然后在本类的有参构造里,又调用了父类的有参构造,相当于间接调用父类的有参构造.

*你这句话的意思  我可不可以这样理解.......
class Son {
        public Son() {
                this.        name=name;
                this.age=age;            //      this    是写在这个子类的无参构造里面  还是写在另外定义的一个方法里面呢
        }
        public Son(Stirng name,int age) {
                super(name,age);
        }
        public void show2(Stirng name,int age) {
                this.name=name;
                this.age=age;                 //还是应该这样写呢?
        }
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马