方法重写与方法重载

一.子类与父类

父类又叫超类、基类

子类又叫派生类

继承的基本语法是:访问修饰符 class 子类(派生类)extend 父类(基类、超类){}

子类会继承父类中所有的属性和方法,但私有属性和方法不能直接使用;

super都只能放在构造器的第一行;

且在Java中,所有类的建立都会默认是创建在一个Object的子类,所以Objet是所有类的父类而且不显示extend关键字;

子类继承父类时访问修饰符的访问权限将大于等于父类的访问权限;

一个子类只能单继承一个父类。

例:

父类:

public class food {

    private  String name;
    public  void setName(String name){
        this.name=name;

    }
    public String getName(){
        return name;
    }
    public  void cooking( ){
        System.out.println(name+"正在被备菜。");
    }
}

子类:

public class meat extends  food {
    @Override
    public void cooking( ) {
        super.cooking();
        System.out.println("您点的肉菜"+getName()+"正在被备菜。");
    }
    public void printName(){
        System.out.println("菜名"+getName());
    }
}

调用:

public class test {
    public static void main(String[] args) {
        food fd=new meat();
        fd.setName("烤肉");
        fd.cooking();

        meat mt=(meat) fd;
        mt.printName();
    }
}

二.继承

子类必须继承父类的构造方法,完成父类的初始化,当父类没有提供无参构造方法,必须用子类的构造方法中用super去完成对父类的初始化。

子类希望调用父类的某个方法要用super(参数)。

在访问子类对象时,如果访问的成员在子类中有,就优先访问子类中的;当子类中无,父类有,就访问继承来的;当子父类都有同名变量时优先访问子类本身的。

三.方法重写(覆盖) 方法重载

方法重写:
1.有继承关系的两个类之间  

2.(访问修饰符大于等于父类)返回值类型,方法名,参数类型(个数,顺序)完全一样

功能:

1.保留父类原有的功能:掉用父类方法

2.新增加的功能

例:

父类:

public class food {

    private  String name;
    public  void setName(String name){
        this.name=name;

    }
    public String getName(){
        return name;
    }
    public  void cooking( ){
        System.out.println(name+"正在被备菜。");
    }
}

子类(方法重写):

public class vegetable extends  food{
    public void cooking( ) {
        super.cooking();
        System.out.println("您点的素菜"+getName()+"正在被备菜。");
    }
}

方法重载:

1.方法重名  

2.参数类型(个数,顺序)不一样

功能:
  同一个方法,通过参数选择实现不同的功能

public class shape {

    public int x1,y1,x,y,x2,y2,x3,y3;
    public  String name;
    public  shape (String name,int x1,int y1,int x,int y){
        this.name=name;
        this.x1=x1;
        this.y1=y1;
        this.x=x;
        this.y=y;
    }
    public shape (String name,int x1,int y1,int x,int y, int x2,int y2){
        this.name=name;
        this.x1=x1;
        this.y1=y1;
        this.x=x;
        this.y=y;
        this.x2=x2;
        this.y2=y2;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值