面向对象之继承

 

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

  

 

1、抽象

        什么是抽象?        

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

        抽象类型

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

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

 

        实现抽象

                关键词:abstract

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

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

        2、封装

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

        封装抽象

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

 

3、继承

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

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

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

        继承关键字:extends。

        

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
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开始可以通过带有默认方法的接口进行多继承,默认方法是使你能够向接口添加新功能并确保实现改接口的所有类的向后兼容性。

 

posted @   呆萌老师  阅读(13)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示