java继承(抽象类)

面向过程 : C语言,以方法为主体,所有的功能都是通过方法之间的调用完成的
面向对象 : java,c++,c#,python,ja

继承:子类拥有父类的属性和方法。(面向对象的三大特征之一)
子类:
父类:(基类、超类) * 格式: extends

vascript 以对象为主体、对象和对象之间的调用。

特点:
1.子类不能继承父类的private属性和方法。
2.类的继承是单继承,但是可以多重继承。
3.一般属性用private修饰,方法用public修饰,所以我们以后开发的工作里卖,主要是继承方法的。

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

使用场景:
如果多个类有共同的属性和方法,那么我们可以吧这些类中共同的属性和方法放到父类中,让这些类(子类)去继承父类,减少代码的重复性。

this.super
都可以代表对象,对象可以调用属性和方法 this.xx super.xx
构造方法里面怎么用。this() super() 代表调用构造方法,并且只能在构造方法里面被调用。
this:
1.对象本身。new的对象就是这个this。
2.this() 调用构造方法,可以有参数。一般只在构造方法里面。
3.如果构造方法里面调用this(),只能放在第一行,否则报错

构造方法补充:
如果类里面没有写构造方法,那么系统默认给一个无参构造方法。
如果类里面存在有参构造方法,那么系统不会给无参构造方法。

super
1.代表的就是父类对象
2.子类的构造方法里面,默认第一句会添加super()。
3.如果子类构造方法手动调用super(),必须放在第一行

抽象类:把具有共同特征的类提取出来就是抽象类

特点:
1.不能实例化对象
2.抽象类就是当爹的。 (抽象类就是用来被继承)

格式:
在创建类的时候,class前面加上abstract

抽象方法:被abstract修饰的方法就叫抽象方法,没有方法体。
如果普通类继承了抽象类,那么抽象类中的抽象方法必须被重写,否则报错

抽象类和普通类的区别:
1.普通类型里面不能有抽象方法,抽象类里面可以有普通方法
2.抽象类里面可以有构造方法,但是不能实例化对象。

方法重写:在继承或者实现关系里面,如果子类和父类的方法名,参数列列表,返回值完全一致,就是方法重写。

1.在继承或者实现关系里面。
2.方法名相同。
3.参数列表
4.返回值
5.修饰符
6.异常

方法重写的目的?
父类的方法不适用子类,那么子类就要考虑重新定义这个方法。

简单小练习:使用继承与封装实现零食商店系统。

package demo02;
//食物类
public class Food {
    private String hunger;//饥饱值
    private String weight;//食物净重
    private String taste;//食物味道
    private String variety;//食物品种

    public Food() {
    }

    public Food(String hunger, String weight, String taste, String variety) {
        this.hunger = hunger;
        this.weight = weight;
        this.taste = taste;
        this.variety = variety;
    }

    @Override
    public String toString() {
        return "Food{" +
                "hunger='" + hunger + '\'' +
                ", weight=" + weight +
                ", taste='" + taste + '\'' +
                ", variety='" + variety + '\'' +
                '}';
    }

    public String getHunger() {
        return hunger;
    }

    public void setHunger(String hunger) {
        this.hunger = hunger;
    }

    public String getWeight() {
        return weight;
    }

    public void setWeight(String weight) {
        this.weight = weight;
    }

    public String getTaste() {
        return taste;
    }

    public void setTaste(String taste) {
        this.taste = taste;
    }

    public String getVariety() {
        return variety;
    }

    public void setVariety(String variety) {
        this.variety = variety;
    }
package demo02;
//油炸
public class Deepfry extends Food{
    public Deepfry() {
    }

    public Deepfry(String hunger, String weight, String taste, String variety) {
        super(hunger, weight, taste, variety);
    }

    @Override
    public String toString() {
        return "Deepfry{}";
    }
}
package demo02;
//非油炸
public class Nonfried extends Food{
    public Nonfried() {
    }

    public Nonfried(String hunger, String weight, String taste, String variety) {
        super(hunger, weight, taste, variety);
    }

    @Override
    public String toString() {
        return "Nonfried{}";
    }
}
package demo02;

import java.util.Scanner;

public class Test {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        Deepfry deepfry =new Deepfry("","","","方便面,薯片,辣条");
        Nonfried nonfried =new Nonfried("","","","草莓干,火腿,青菜");
        System.out.println("欢迎来到零食店");
        System.out.println("请选择要购买的品种:1. 油炸食品 2. 非油炸食品 ");
        int purchase = scanner.nextInt();//购买
        switch (purchase){
            case 1:
                System.out.println("1、原味干脆面 2、黄瓜味薯片 3、辣条");
                int choose = scanner.nextInt();
                if (choose==1){
                    System.out.println("恭喜成功购买1袋原味干脆面");
                } else if (choose==2) {
                    System.out.println("恭喜成功购买1袋黄瓜味薯片");
                } else if (choose==3) {
                    System.out.println("恭喜成功购买1袋辣条");
                }
                break;
            case 2:
                System.out.println("1.草莓干,2.火腿,3.青菜");
                int chooose2 = scanner.nextInt();
                if (chooose2==1){
                    System.out.println("恭喜成功购买1袋草莓干");
                } else if (chooose2==2) {
                    System.out.println("恭喜成功购买1袋火腿");
                } else if (chooose2==3) {
                    System.out.println("恭喜成功购买1袋原青菜");
                }
                break;
        }
    }
}


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值