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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

©   /  2012-6-22 01:56  /  4198 人查看  /  16 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在java里面重载 即为方法重载指的是同一个方法有着多种不同的表现形式,具体有方法参数的类型不同,个数不同,注意和方法的返回值没有关系。
而重写必须有继承,没有继承不谈重写,还有我们在重写之前一定要弄清除我们为什么要重写?重写的具体意义是什么? 我个人的理解是即当子类对父类的某些成员变量或成员方法不满意时我们就需要重写父类的成员方法或成员变量。
public String toString(); 是Object类里的一个方法,Object 类的 toString 方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、at 标记符“@”和此对象哈希码的无符号十六进制表示.
我们都知道Object是所有java 类的父类,当我们在定义了一个自己的类比如说Student
public class Student // 相当于 extends Object
{
        private String name;
        private String sex;
        public Student()
        {
       
        }
        public Student(String name, String sex)      //这里对构造方法进行了重载
        {
                 this.name = name;
                this.sex = sex;
        }
        public String toString()
        {
                return this.name + " " + this.sex;
        }
        public static void main(String[ ] args)
        {
                Student student = new Student("Tanliwen", "Man");
                System.out.println(student);
        }
}
如果我们没有重写父类的方法public String toString();方法当我们在执行System.out.println(student); //相当于是System.out.println(student.toString());
输出的是Student@(对象哈希码的无符号十六进制)请问你对这个输出结果感兴趣吗,是否有觉得晦涩,反正我是觉得很晦涩?
这个时候我们就可以来重写父类的public String toString();方法来输出Student实例的属性,姓名以及性别。
也许你会说我完全可以不重写父类的public String toString();方法而重新定义一个方法:
public String getInformation()
{
                return this.name + " " + this.sex;
}
是的,完全可以,而我们为什么要选择重写呢?java在输出一个对象名时是默认调用的toString方法,这样我们在重写父类的方法之后可以给我们的程序带来便利,你觉得是写System.out.println(studnet.getInformation());更方便还是直接System.out.println(student);更简洁。
这些只是我在学完java基础后一点个人的理解,若有错误,欢迎拍砖,共同学习。


回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马