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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 崔一恒 中级黑马   /  2013-7-20 17:48  /  1127 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 崔一恒 于 2013-7-21 20:30 编辑
  1. public class Test8 {
  2.         public static void main (String[] args) {
  3.         Person p = new Person();
  4.         p.sayHello();
  5.         Chinese c = new Chinese(20,"张三");
  6.         c.sayHello();
  7.         }
  8. }
  9. class Person {
  10.         private int age;//年龄属性
  11.         private String name;//姓名属性
  12.         public Person(){//不带参数的构造方法
  13.                 name = new String();
  14.                 }
  15.         public void Person(int a, String n){//带参数的构造方法
  16.                 this.age = a;
  17.                 this.name = n;
  18.         }
  19.         
  20.         public int getAge(){
  21.                 return age;}
  22.         public String getName(){
  23.                 return name;}
  24.         
  25.         public void sayHello(){
  26.                 System.out.println ("我是***我的年龄是***");
  27.         }
  28. }
  29. class Chinese extends Person{//Chinese继承Person类
  30.         public void Chinese(int a, String n) {
  31.                 super(a,n);}
  32.         public void sayHello(){ //覆盖父类的sayHello方法
  33.                 System.out.println ("我是"+getName()+" 我的年龄是"+getAge());
  34.         }
  35. }
复制代码
这段代码老有问题  求高手指点

评分

参与人数 1技术分 +1 收起 理由
杜光 + 1 每天提问并回答问题,是对知识的复习和积累.

查看全部评分

10 个回复

倒序浏览
你的两个带参数的构造方法都 有返回值,不能的
回复 使用道具 举报
  1. class Person {
  2.         public String name;
  3.         public int age;

  4.         public Person(String name, int age) {
  5.                 this.name = name;
  6.                 this.age = age;
  7.         }

  8.         public void sayHello() {
  9.                 System.out.println("我的名字是:" + name);
  10.                 System.out.println("我的年龄是:" + age);
  11.         }
  12. }
  13. class Chinese extends Person
  14. {

  15.         public Chinese(String name, int age) {
  16.                 super(name, age);
  17.         }
  18.        
  19. }
  20. public class Test8{
  21.         /**
  22.          * @param args
  23.          */
  24.         public static void main(String[] args) {
  25.        Person person=new Person("alice", 20);
  26.        person.sayHello();
  27.        Chinese c=new Chinese("tom", 16);
  28.        c.sayHello();
  29.         }

  30. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
杜光 + 1 每天提问并回答问题,是对知识的复习和积累.

查看全部评分

回复 使用道具 举报
首先用private修饰的属性无法被继承,应该用public,其次需要打印的是结果没有必要用get方法,
第三个构造函数没有返回值并且不可以被初始化,建议楼主加强一下基础。
回复 使用道具 举报
子类不能继承父类中的private属性成员,如果要用应该改为public
回复 使用道具 举报
public int age;//年龄属性
public String name;//姓名属性
//错误1处,private修饰的变量无法被继承
public void Person(int a, String n){//带参数的构造函数            
this.age = a        
this.name = n}
//错误2,构造函数没有返回值类型,子类代码同理


在你基础上改错后的代码
  1. public class Test8 {
  2.         public static void main (String[] args) {
  3.         Person p = new Person();
  4.         p.sayHello();
  5.         Chinese c = new Chinese(20,"张三");
  6.         c.sayHello();
  7.         }
  8. }
  9. class Person {
  10.         public int age;//年龄属性
  11.         public String name;//姓名属性
  12.         Person(){}//无参构造函数
  13.         public  Person(int a,String n){//带参数的构造方法
  14.                 this.age = a;
  15.                 this.name = n;
  16.         }
  17.         
  18.         public int getAge(){
  19.                 return age;}
  20.         public String getName(){
  21.                 return name;}
  22.         
  23.         public void sayHello(){
  24.                 System.out.println ("我是***我的年龄是***");
  25.         }
  26. }
  27. class Chinese extends Person{//Chinese继承Person类
  28.         
  29.         public  Chinese(int a, String n)
  30.                         {super(a,n);}
  31.         public void sayHello(){ //覆盖父类的sayHello方法
  32.                 System.out.println ("我是"+getName()+" 我的年龄是"+getAge());
  33.         }
  34. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
杜光 + 1 每天提问并回答问题,是对知识的复习和积累.

查看全部评分

回复 使用道具 举报
public class person extends extend {
        protected person(int age, String nameString) {
                super(age, nameString);
                // TODO Auto-generated constructor stub
        }
        public  void sayHello(){
                System.out.println(getAge()+":"+getNameString());
               
               
        }
        public static void main(String[] args) {
                extend person=new extend(3,"nihao");
                person.sayHello();
                person person2=new person(2, "haha !");
                person2.sayHello();
        }
}
                       这个类单独写,不要把所有类放在一起,name=new String();!!!!去了这又是不对象new什么!

评分

参与人数 1技术分 +1 收起 理由
杜光 + 1 每天提问并回答问题,是对知识的复习和积累.

查看全部评分

回复 使用道具 举报
付龙 中级黑马 2013-7-21 07:15:50
8#
private int age;//年龄属性

private String name;//姓名属性
父类private修饰,子类不能继承。


public void Person(int a, String n){//带参数的构造函数            
this.age = a        
this.name = n}
构造函数没有返回值



评分

参与人数 1技术分 +1 收起 理由
杜光 + 1 每天提问并回答问题,是对知识的复习和积累.

查看全部评分

回复 使用道具 举报
杜光 高级黑马 2013-7-21 08:47:07
9#
楼主你好  如果帖子的问题已经解决,请把帖子的类型改为“已解决”。
回复 使用道具 举报
子类只能继承父类中非私有的属性和方法。。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马