java-重载、重写、多态、super、this

来源:互联网 发布:淘宝店铺标题图片 编辑:程序博客网 时间:2024/06/16 22:12

一.overload重载
//方法的重载:同名方法 overload
// 1.同一个类中 2.同一个方法名
// 1.参数的数据类型不同 2.参数的个数不同 3.参数的顺序不同

public class Demo6{    //程序运行    public static void main(String [] args){        //方法的调用   好处:提高代码的复用性        //printJiu();   实际参数        //double a = add1(10.5,29.6);//调用add方法,他有一个返回值,我们用变量a来接收他        //System.out.println(a);        //add2(10,20);    }    //计算两个数相加(未知:2个数 double)形式参数  ,把结果返回   有返回值有参数    public static double add1(double num1,double num2){        //代码        double result = num1+num2;        return result;//返回结果    }    public static void add2(double num1,double num2){//有参数没有返回值        double result = num1+num2;        System.out.println("输出:"+result);    }    //和主方法并列   没有返回值void    没有返回值,没有参数    public static  void  printJiu(){        //打印九九乘法 的代码        for(int j = 1;j<=9;j++){//行数        //每一行所做的事情            for(int i = 1;i<=j;i++){                System.out.print(i+"*"+j+"="+(i*j)+" ");            }            System.out.println();        }        //return ; 省略的    }}

二.重写(Overriding)
(1) 父类与子类之间的多态性,对父类的函数进行重新定义。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。在Java中,子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。
方法重写又称方法覆盖。
(2)若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,则新方法将覆盖原有的方法。如需父类中原有的方法,可使用super关键字,该关键字引用了当前类的父类。
(3)子类函数的访问修饰权限不能少于父类的;
@override
静态的方法一般不涉及重写

参考链接内容

三.super
super调用超类的方法和调用超类的构造器
this的两个用途:引用函数参数;调用该类的其他构造器。
super的两个用途:调用超类的方法;调用超类的构造器。
this();super()这两个调用构造器都要放在第一位
此处注明:java不支持多继承,但是支持多个层次的继承

import java.util.Date;import java.util.GregorianCalendar;public class Employee {    private String name;//年龄    private double salary;//工资    private Date hireDate;//租用日期    public Employee(String name,double salary,int year,int mounth,int day)    {        this.name=name;        this.salary=salary;        GregorianCalendar calendar=new GregorianCalendar(year,mounth-1,day);//日期        this.hireDate=calendar.getTime();//获取日期的时间    }    public String getName()    {        return name;    }    public double getsalary()    {        return salary;    }    public Date hireDate()    {        return hireDate;    }    public void raiseSalary(double byPrcent)    {        double rsalary=salary*byPrcent/100;        salary+=rsalary;    }}//Manager类public class Manager extends Employee {    private  double bonuse;    public Manager(String name, double salary, int year, int mounth, int day) {        super(name, salary, year, mounth, day);        bonuse=0;    }    public double getsalary()    {        double basesalary=super.getsalary();        return basesalary+=bonuse;    }    public void setBonuse(double bonuse) {        this.bonuse = bonuse;    }}//ManagerTest类public class MangerTest {    public static void main(String[] args) {        // TODO Auto-generated method stub        Manager boss=new Manager("carl Cracker", 8000, 1987, 12, 15);        boss.setBonuse(5000);        Employee[] straff=new Employee[3];        straff[0]=boss;        straff[1]=new Employee("Hacker", 5000, 1989, 11, 10);        straff[2]=new Employee("张三", 10000, 1996, 10, 15);        for(Employee e:straff)        {            System.out.println(" "+e.getName()+" "+e.getsalary()+"时间是"+e.hireDate());        }    }}

四.多态
一个Employee可以引用一个Employee类对象,也可以引用Employee的任何一个子类的对象
这里写图片描述
子类的对象指向父类的引用
多态:情况下
1.静态属性和非静态属性(调用父类)
2.静态方法(调用父类)和非静态属性(调用子类的)
缺点:多态下只会调用父类具有的。
编译时类型:泛指
运行时类型:具体

阅读全文
0 1
原创粉丝点击