java 面向对象基础(OOP)2:继承和多态

继承

1.含义:

继承是一种由已有的类创建新类的机制。由继承而得到的类称为子类或派生类,被继承的类称为父类、基类、或超类。JAVA不支持多重继承,子类只能有一个父类。
可以先创建一个共有属性的一般类,根据一般类再创建具有特殊属性的新类,新类继承一般类的状态和行为,并根据需要增加它自己的新的状态和行为。

2.继承的使用

格式:public class 子类extends 父类{ }

继承的关键字是extends.
我们可以把公共属性和行为提取出来放在父类,由子类扩充父类来实现更多的特性,这样就节约了很多代码,程序变得更加简洁,而且容易扩充。

3.方法的覆盖与重载:

在父类中继承的方法在子类中重写的方法就做方法覆盖;

方法的重载就是具有相同函数名,返回类型可以不同,参数个数、顺序、类型不同的函数。

多态

同一个对象,调用不同类的实例,从而得到不同的结果。

Super关键字

Super关键字引用当前对象的直接父类中的属性和方法、广泛的运用于构造方法内。

Final关键字

Final 修饰类,这个类不能被继承;
Final 修饰方法,这个方法不能被重写;
Final 修饰一个属性,这个属性就不能被重新赋值;
Final 修饰一个变量,这个变量就变成了常量;
Final 修饰一个对象就不能引用其他的对象。

实例:买披萨问题

package cn.zbw;

import java.util.Scanner;

public class Pizza {
    private int size;
    private int price;
    private String name;
    //get set方法
    public int getSize() {
        return size;
    }
    public void setSize(int size) {
        this.size = size;
    }
    public int getPrice() {
        return price;
    }
    public void setPrice(int price) {
        this.price = price;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

    public Pizza() { //无参构造
        super();
    }
    public Pizza(int size, int price, String name) { //有参构造
        super();
        this.size = size;
        this.price = price;
        this.name = name;
    }
    public String show(){
        return "这是制作披萨的方法!";
    }

    public static class Bacon_Pizza extends Pizza {

        public Bacon_Pizza() { //无参构造
            super();
        }
        //有参构造
        public Bacon_Pizza(int size, int price, String name) {
            super(size, price, name);
        }
        //重写shou方法
        public String show(){
            return "名称:"+super.getName()+"\n价格:"+super.getPrice()+"元"+"\n大小:"+super.getSize()+"寸";
        }
    }
    public static class Seafood_Pizza extends Pizza {

        public Seafood_Pizza() {//无参构造
            super();
        }
        //有参构造
        public Seafood_Pizza(int size, int price, String name) {
            super(size, price, name);
        }

        //重写show方法
        public String show(){
            return "名称:"+super.getName()+"\n价格:"+super.getPrice()+"元"+"\n大小:"+super.getSize()+"寸";
        }
    }

    public static class PizzaStore extends Pizza{ //披萨工厂类-->主要是生产披萨
        public static Pizza getPizza(int order) { //得到披萨的方法
            Scanner input = new Scanner(System.in);
            Pizza p = null; //赋初始值
            if (order == 1) {
                System.out.println("请输入披萨大小:");
                int size = input.nextInt();
                System.out.println("请输入披萨价格:");
                int price = input.nextInt();
                // 根据上面录入的信息,创建具体的培根披萨:--创建对象:
                p = new Bacon_Pizza(size, price, "培根披萨");
            }
            if (order == 2) { // 海鲜披萨
                System.out.println("请输入披萨大小:");
                int size = input.nextInt();
                System.out.println("请输入披萨价格:");
                int price = input.nextInt();
                // 根据上面录入的信息,创建具体的培根披萨:--创建对象:
                p = new Seafood_Pizza(size,price,"海鲜披萨");
            }
            return p; //最终根据需求生产具体披萨后,并返回
        }
    }
        public static void main(String[] args) {
            //具体的逻辑:---买披萨:
            Scanner input = new Scanner(System.in);
            System.out.println("请输选择要制作的披萨:1.培根披萨   2.海鲜披萨");
            int num = input.nextInt();
            Pizza p=PizzaStore.getPizza(num);
            System.out.println(p.show());
        }
}
  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值