面向对象之继承进阶


/*
*作者:呆萌老师
*☑csdn认证讲师
*☑51cto高级讲师
*☑腾讯课堂认证讲师
*☑网易云课堂认证讲师
*☑华为开发者学堂认证讲师
*☑爱奇艺千人名师计划成员
*在这里给大家分享技术、知识和生活
*各种干货,记得关注哦!
*vx:it_daimeng
*/

1、抽象

        什么是抽象?        

                抽象涉及定义代表抽象“参与者”的对象工具,这些参与者可以执行工作。同时抽象是使用与其含义相似的表达形式定义数据和程序的过程,同时隐藏实现细节。

        抽象类型

                1、数据抽象:数据抽象是创建复杂数据类型并仅公开有意义的操作与数据类型交互的方法。同时对外部工作隐藏所有实现细节。

                2、控制抽象:控制抽象是识别所有编程语言编写的语句并且将他们作为工作单元公开的过程。

        实现抽象

                关键词:abstract

                抽象是面向对象编程实践的核心原则之一,是Java语言的主要构建块之一。

                在Java中通过接口与抽象类来实现抽象,接口允许完全抽象实现,抽象类允许部分抽象实现。在实现抽象中,从简单的数据抽象的实现,到复杂的集合类的实现是我们的数据抽象的体现。控制抽象体现在我们结构化编程中。

        2、封装

                封装是我们自定义抽象的实现。它将我们的代码与变量封装在同一个类中,实例变量私有化,只有方法可以操控我们的变量。

        封装抽象

                抽象更多的是描述类可以干什么?是我们想法的一种体现。封装更多关注如何来实现这些功能,它更多注重于实现想法上。

3、继承

        继承是指子类对象从父类对象继承或者获取属性和行为的能力。

        目的是减少代码冗余,提高代码可复用性,实现类与类之间的层次化结构。

        Java中的继承是指子类可以继承父类的公共状态和行为,以及子类可以继承父类中所有非私有的成员变量或方法。

        继承关键字:extends。

        

public class Inherit {
    private String name;
    private double raise;
    private LocalDate localDate;
 
 
    public Inherit(String name, double raise,int year,int month,int day) {
        this.name = name;
        this.raise = raise;
        localDate=LocalDate.of(year,month,day);
    }
 
 
    public String getName() {
        return name;
    }
 
 
    public double getRaise() {
        return raise;
    }
    public  void rise(double mony){
        double rise1=raise * mony/100;
        raise+=rise1;
    }
} 





public class Son extends Inherit {//首先这里表明son继承Inherit这个类
    private  double jiangjin;
    public Son(String name, double raise, int year, int month, int day) {
        super(name, raise, year, month, day);//这里的super的用法是指绕过系统默认的,去调用父类里面带super中所传的参数的构造器
        jiangjin=0;
    }
public double getRaise(){//方法重写/方法覆盖
        double ricess=super.getRaise();//这里的super用法表示
        return ricess+jiangjin;
}
    public void setJiangjin(double jiangjin) {
        this.jiangjin = jiangjin;
    }
} 





public class test {
    public static void main(String[] args) {
        Son son=new Son("smis",8000,1900,5,11);
        son.setJiangjin(5000);
 
 
        Inherit[] I=new Inherit[3];
        I[0]=son;//子类向上转型
        I[1]=new Inherit("Tom",8000,1900,2,12);
        I[2]=new Inherit("Aom",8000,1900,2,12);
        for (Inherit i:I) {
           System.out.println("name:"+i.getName()+"\trice:"+i.getRaise());
        }
    }
} 

继承的类型

        1、单继承:只有一个父类和一个子类

        2、多级继承:一个子类充当另一个子类的父类

        3、分层继承:一个父类和多个子类。

        4、从多个父类继承行为。如果一个类实现了两个接口并且都定义了默认方法,那么它本质上是从两个父类继承行为,即多重继承。JDK1.8开始可以通过带有默认方法的接口进行多继承,默认方法是使你能够向接口添加新功能并确保实现改接口的所有类的向后兼容性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值