Java之重载和重写
来源:互联网 发布:软件著作权是什么意思 编辑:程序博客网 时间:2024/04/29 03:40
重载(Overload)与重写(Overwrite/Override)都是针对方法来说的,那这两种机制有什么好处呢?
重载——同样的一个方法能够根据输入数据的不同,做出不同的处理。【有不同的参数列表(静态多态性)】
重写——当子类继承自父类的相同方法,输入数据一样,但要做出有别于父类的响应时,就需要重写父类的方法。即在子类中重写该方法【相同参数,不同实现(动态多态性)】
用个toy program应该更好理解一些,看完程序之后建议读者应该先想一想输出结果是什么。
1. Overload:比较不同类型的两个数的大小,把大的那个数输出。
public class TestOverload{void max(int a,int b){System.out.println(a>b ? a : b);}//构成重载,名称一样,参数(个数或类型)不一样的多个方法void max(short a, short b){System.out.println(a > b ? a : b);}void max (float a, float b){System.out.println(a> b ? a : b);}public static void main(String[] args){Test t = new Test();//调用的是int类型的参数方法t.max(2, 5); //调用的是short类型的参数方法short a=2;short b = 4;t.max(a,b);}}
输出结果:
t.max(2,5)调用的是void max(int a,int b),再比较这个两个值的大小,结果输出是5;t.max(a,b),传入的是虽然是2和4,但强制转换成short类型,所以调用的是void max(short a, short b),结果输出是4。
2.Override:获取人和学生的相关信息。
//获取人和学生的相关信息class Person{private String name;private int 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 String getInfo(){ //父类只有name合age属性return "Name: " + name + "\n" + "age: " +age;}}class Student extends Person{private String school; //除了有父类的name和age外,还有自己的的school属性 public String getSchool(){ return school;}public void setSchool(String school){ this.school=school;}//重写了父类的方法,把自己特有的school属性也实现public String getInfo(){return "Name: " + getName() + "\n" + "age: " +getAge() + "\nschool: " +school;}}public class TestOverWrite{public static void main(String arg[]){Student student = new Student();Person person = new Person();person.setName("lee");person.setAge(24);student.setName("Angelo");student.setAge(18);student.setSchool("北理工");person.getInfo();student.getInfo();System.out.println(person.getInfo()); //person的信息,父类System.out.println(student.getInfo()); //student的信息,子类}}
输出结果:
通过这两个小例子,对于重载与重写有了简单明了的认识。重写在多态当中的好处表现出了OOP的好处,经过实践后会有更深的体会,接下来会继续去认识多态。
0 0
- java之重载和重写
- java之重载和重写
- Java之重载和重写
- java学习之重载和重写
- Java面向对象之重载和重写
- Java之重载和重写_20150804
- java之重载和重写<一>
- JAVA 基本概念之重载和重写
- JAVA 重写和重载
- java 重载和重写
- java 重写和重载
- java重载和重写
- java重写和重载
- java重写和重载
- 【JAVA】重写和重载
- java重载和重写
- Java重载和重写
- java重载和重写
- 二层转发原理
- Studio 初步汇总
- 触摸事件分发文章记录
- XGBOOST参数说明
- 福利来了
- Java之重载和重写
- Shell中的grep
- Linux 下利用dnw进行USB下载~~ (转载)
- 1055. 集体照 (25)
- Forth Day(浅谈对象的内存图解)
- 【HTML5】SVG制作过山车动画(二)
- 【编程之法】如何最快的判断出短字符串b中的所有字符是否都在长字符串a中?编写函数bool StringContain(string&b,string&a)实现此功能。
- 成功者的良好习惯
- C++中字符串string和整数int的互相转化方式