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

一.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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值