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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 張帅 中级黑马   /  2013-11-8 21:47  /  1228 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 張帅 于 2013-11-10 13:45 编辑

1.overload和override的区别,方法重载和方法重写区别是什么?
重写是不是子父类的名称和参数相同,
重载是不是在一个类中定义多个同名的方法,它们或有不同的参数个数或有不同的参数类型。求大神给通俗的解释下。
2.享元模式
听课的时候总结的是:有很多个的对象,它们有很多属性相同,把这些对象变成一个对象,那些不同的属性变成方法的参数
,称之为外部状态,那些相同的属性称之为内部状态。求大神给通俗的解释下。

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

4 个回复

倒序浏览
重写是子类跟父类之间的事:
我觉得你的方法不好用,所以我重写了你的方法,
所以 标识符,方法名,返回值,参数都要一模一样
重载是自己在那瞎折腾:
好几个方法取同一个方法名,只要参数不一样就算重载——调用的时候能明确只会有一个方法可以响应
享元模式是说:
我们在内存里专门腾出一个地方,把目测有可能被频繁使用的值为常量的包装对象放进去,
要是程序需要的对象这个地方正好有,就直接把这个对象传递过去,
包括:
字符串字面值:“abc","bcd"这种,new 出来的不算
数字类型的包装类的小数值:老师讲过Integer -128~127,其他的没测试过
回复 使用道具 举报
  1. /*
  2. * 1、一个类中可以有多个构造函数,它是以重载的形式存在的  

  3. */
  4. class A{
  5.         public void show()
  6.        {
  7.                System.out.println("父类");
  8.        }
  9. }
  10. class person1 extends class A
  11. {
  12.         private String name;
  13.         private int age;
  14.          public void show()//这里重写了父类中的show方法
  15.                 {
  16.                       System.out.println("子类");
  17.                 }        
  18.         public void setName(String name){
  19.               this.name=name;
  20.         }
  21.         public String getName()
  22.         {
  23.                 return "更改名字为:"+this.name;
  24.         }
  25.         person1()
  26.         {
  27.                 System.out.println("A:name="+this.name+",age="+this.age);
  28.         }
  29.        
  30.         person1(String name)//这里的话跟Person1()是重载的形式存在于同一个类中的
  31.         {
  32.                 this.name=name;
  33.                 System.out.println("B:name="+this.name+",age="+this.age);
  34.         }
  35.         person1(String name,int age)//这个也是重载
  36.         {
  37.                 this.name=name;this.age=age;
  38.                 System.out.println("C:name="+this.name+",age="+this.age);
  39.         }
  40.        
  41.        
  42.         public void show()
  43.         {
  44.                 System.out.println("hello");
  45.         }
  46. }
  47. public class PersonDemo {
  48.         public static void main(String[] args){
  49.         person1 p=new person1();
  50.         p.show();
  51.         person1 p1=new person1("张三");
  52.         //person1 p2=new person1("李四",22);
  53.         p1.setName("王五");
  54.         System.out.println(p1.getName());
  55.     }
  56. }
复制代码
重载:只看同名函数的参数列表。。
重写:子类和父类的方法要一模一样(包括返回类型)
这就是他们的区别!希望能帮到你

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 FFF 于 2013-11-8 22:30 编辑

重写与重载你都理解对了。
重写Overrid:
1.子类与父类之间的多态性,对父类的函数进行重新定义。如果某子类中定义某方法与父类有相同的名称与参数,我们说该方法被重写。在Java中,子类可以继承父类中的方法,而不用重新编写相同的方法。但有时子类并不想与父类中的方法相同,而是想做一些修改时,就需要采用重写。方法重写又叫方法覆盖。
2.如果重写了父类中的方法时,又想再调用父类的方法可以使用Super关键字。可以直接引用当前父类中的方法。
3.子类函数的访问权限不能低于父类的。

重载:方法的重载是让类以统一的方式处理不同类型的数据的手段。多种同名的函数同时存在,不同的参数个数与类型。重载是一个类中多态性的一种表现。
java的方法的重载,就是在不同类型中创建多个方法,他们具有相同的名字,不同的参数和不同的定义。调用方法时通过传递给他们的不同的参数个数与不同参数的类型来判断使用那种方法。这,就是多态性。
重载,方法名一样。参数类型或个数不一样。返回值类型可以一样,也可以不一样。不能以返回值类型来作为是否重载的区别标准。
构造函数的重载,就是一个最典型的重载。

享元模式你也理解得很正确,在此,我就不多说了!
手受伤了。单手打字好累。
回复 使用道具 举报
如果问题已经解决,请及时修改主题为“提问结束”。
修改主题的方法链接
http://bbs.itheima.com/thread-89313-1-1.html
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马