【JAVASE_学习笔记】抽象类与接口

编写一个类实现银行帐户的概念 实验题目 编写一个类实现银行帐户的概念,包括的属性有“帐号”、“储户姓名”、“地址”、“存款余额”,包括的方法有“存款”、“取款”、“查询”、“计算利息”、“累加利息”等。 实验要求 改写上面的类,增加一个类的静态属性“最小余额”和一个用来修改这个最小余额属性的方法。 改写上面的类,增加一个类的静态属性“活期利率”和封装这个属性的相应方法。 程序模块 实验后的结果验证 总结体会 通过此次实验,我初步掌握了编写一个类的概念,更进一步的熟悉了static等等与之用法相类似的语法类,增强了自己学好JAVA的信心。进一步掌握静态对象和非静态对象的区别与联系。 静态对象的数据在全局是唯一的,一改都改。如果你想要处理的东西是整个程序中唯一的,弄成静态是个好方法。 非静态的东西你修改以后只是修改了他自己的数据,但是不会影响其他同类对象的数据。 静态对象和非静态对象都是对象,是对象都是要实例化的。不同之处就是2者的数据表现和存储方式不一样。 静态的好处: 引用方便。对于公用类型的变量,直接用 类名.静态方法名 或者 类名.静态变量名就可引用并且直接可以修改其属性值,不用getter和setter方法。 保持数据的唯一性。此数据全局都是唯一的,修改他的任何一处地方,在程序所有使用到的地方都将会体现到这些数据的修改。 有效减少多余的浪费。 立即下载

【JAVASE_学习笔记】抽象类与接口

final关键字

final表示最终
注意:
   1.final修饰一个基本类型变量时,该变量不能被重新赋值
     常量的修饰符为:public static final
   2.final修饰一个引用类型变量时,该引用不能重新指向新的对象
   3.final修饰一个方法时,该方法不能被重写
   4.final修饰一个类时,该类不能被继承
举例:

final class Circle{
    double r;
    public  static  final double PI = 3.14; // 常量
    //构造函数
    public Circle(double r){
        this.r = r;
    }
    public Circle(){}
    public final void getArea(){
        System.out.println("面积是:"+ PI*r*r);
    }
}

class Demo3 {
    public static void main(String[] args) 
    {
        final Circle c = new Circle(3.0);
        //c = new Circle();//报错
        print(c);//不会报错
    }
    public static void  print(final Circle c){
        //c  = new Circle(4.0);  // c指向了新的对象。
    }
}

abstract(抽象)类

描述一类事物时,发现该事物确实存在着某种行为,但目前该行为是不具体的,这时应该抽取该方法的声明,不去实现该方法,这时应使用抽象类。
注意:
   1.如果一个方法没有方法体,那么该方法必须使用abstract修饰
   2.如果一个类有抽象的方法,该类也必须用abstract修饰
   3.非抽象类继承抽象类时,必须把抽象类中的所有抽象方法全部实现
   4.抽象类可以定义抽象方法以及非抽象方法
   5.抽象类可以不存在抽象类
   6.抽象类不能创建对象
   7.抽象类是存在构造方法的(留给子类调用初始化父类继承的成员变量)
抽象类的成员特点:
    成员变量:
      可以是变量也可以是自定义常量
    构造方法:
      抽象类可以有构造方法:包括有参构造和无参构造
      作用:通过抽象类多态的形式:让子类进行数据的初始化
    成员方法:
      可以有抽象方法,也可以有非抽象方法
      抽象方法:强制子类必须要做到一件事情:方法重写(覆盖)
      非抽象方法:由继承保证可以去提高代码的复用性
abstract不能和以下关键字配合使用:
  1.不能和private配合使用
  2.不能和final配合使用
  3.不能和static配合使用
举例:

//测试类
public class Demo1 {
    public static void main(String [] args){
        Rectangle r=new Rectangle(3,4);
        System.out.println(r.areaMath());//12.0
        System.out.println(r.perimeterMath());//14.0
        Circle c=new Circle(1.0);
        System.out.println(c.areaMath());//3.14
        System.out.println(c.perimeterMath());//6.28
    }

}
//图形类  抽象
abstract class Graph{
    public abstract double areaMath();
    public abstract double perimeterMath();
}
//矩形类
 class Rectangle extends Graph{
    int shortLength;
    int longLength;
    public Rectangle(int shortLength,int longLength){
        this.shortLength=shortLength;
        this.longLength=longLength;
    }
    //方法重写:返回值类型要与抽象方法一致,或是抽象方法返回值类型的子类
    public double areaMath() {
        int area=shortLength*longLength;
        return area;
    }
    public double perimeterMath() {
        int perimeter=(shortLength+longLength)*2;
        return perimeter;
    }
}
//圆形类
 class Circle extends Graph{
    double r;
    //常量要用public static final修饰
    public static final double PI=3.14;
    public Circle(double r){
        this.r=r;
    }
    public double areaMath() {
        double area=PI*r*r;
        return area;
    }
    public double perimeterMath() {
        double perimeter=PI*r*2;
        return perimeter;
    }
}

接口

接口的定义格式:

interface 接口名{

}

接口子实现类的一般命名规范:接口名+impl
实现接口的格式:

class 接口 implements 接口{

}

注意:
   1.接口其实是一个特殊的类
   2.接口中的成员变量都属于常量,默认修饰符:public static final
   3.接口中的方法都是抽象的方法,默认修饰符:public abstract
   4.接口是不能用于创建对象的
   5.接口是没有构造方法的,因为接口中的变量都是常量,接口中的方法都是抽象的方法
   6.一个非抽象类实现一个接口时,必须实现接口中的所有方法
接口的作用:
   1.拓展功能
   2.定义约束规范
   3.程序的解耦
接口与类之间的关系:实现关系
   1.非抽象类实现一个接口时,必须要把接口中的所有方法都实现
   2.一个类可以实现多个接口

class 类名 implements 接口1,接口2,...

   3.抽象类实现接口时,可以实现接口中的方法,也可以不实现接口中的方法
接口和接口之间的关系:继承关系
   一个接口可以继承多个接口

interface B extends A,C

接口与抽象类间的区别:
  1)成员的区别
    成员变量:抽象类:成员变量可以是常量也可以是变量
         接 口:成员变量只能是常量,默认修饰符为:public static final
    构造方法:抽象类:可以有无参构造、有参构造方法
             作用:通过子类进行数据初始化(通过子类创建对象)
         接 口:没有构造方法
    成员方法:抽象类:可以有抽象方法,也可以有非抽象方法
         接 口:只能是抽象方法。默认修饰符为:public abstract
  2)关系的区别
    类与类的关系:extends,Java中只存在单继承,不支持多继承,但支持多层继承
    类与接口:implements,一个类在继承另一个类的同时可以实现多个接口
    接口与接口:继承关系,可以单继承也可以多继承
  3)设计理念
    抽象类:体现的是一种“is a”关系,存在继承关系
    接口:体现的是“like a”关系,扩展功能
举例:

//测试类
public class Demo2 {
    public static void main(String [] args){
        Student s=new Student("张三",18);
        s.study();//18岁的张三学习啦
        SomeStudent ss=new SomeStudent("李四",23);
        ss.study();//23岁的李四学习啦
        ss.getMoney();//23岁的李四赚钱啦
    }

}
//父类
class Student {
    String name;
    int age;
    public Student(String name,int age){
        this.name=name;
        this.age=age;
    }
    public void study(){
        System.out.println(age+"岁的"+name+"学习啦");
    }
}
//接口
interface GetMoney{
    public void getMoney();
}
//子实现类
class SomeStudent extends Student implements GetMoney{
    public SomeStudent(String name,int age){
        super(name,age);
    }
    public void getMoney(){
        System.out.println(age+"岁的"+name+"赚钱啦");
    }
}
ROS 入门教程:小乌龟仿真器和基础操作 小乌龟仿真器和ros基础操作 阅读详情

相关推荐

qcom bypass node介绍

介绍qcom bypass node,以及如何让其生效

haodada1226的博客 2043

抽象类和接口的异同

抽象类和接口的区别

qq_49477533的博客 320

从零到一:基于K375S主控的机械键盘优联无线化改造实战

本文详细记录了基于罗技K375S主控进行机械键盘优联无线化改造的全过程。从改造动机、核心原理与物料准备,到电路设计、PCB打样、焊接调试,逐步拆解了将优联技术集成到自定义机械键盘中的实战步骤。项目最终实现了低延迟、高稳定性且支持多设备连接的优联无线机械键盘,为DIY爱好者提供了高性价比的改造方案。

h0i1j2k3l的博客 601

java接口调用实现类的方法快捷键_Eclipse常用快捷键操作 类、抽象类、接口作为方法...

01eclipse快捷键* A:  Ctrl+T:查看所选中类的继承树例如,在下面代码中,选中Teacher类名,然后按Ctrl+T,就会显示出Teacher类的继承关系* B: 查看所选中方法的源代码Ctrl+滑动鼠标点击方法名,或者选中方法名后,按F3键查看所选中方法的源代码。02java中的文档注释和制作* A: 在eclipse使用时,可以配合文档注释,导出对类的说明文档,从而供...

weixin_42421177的博客 2194

手把手教你用示波器实测LVDS/CML信号:从波形解读到故障排查(附实测图)

本文详细介绍了如何使用示波器实测LVDS和CML信号,从波形解读到故障排查的全过程。涵盖差分探头选择、示波器配置、标准波形特征解读、眼图分析技巧以及高速信号捕获要点,帮助硬件工程师快速诊断和解决信号完整性问题。附实测图和案例,提升高速数字电路设计效率。

weixin_27215337的博客 200

最简解决 Unity Error Registry configuration is invalid Unable to connect https packages.unity.cn

前言 在学习其他大佬项目的时候,大佬说项目能直接运行,然后我拉下来就报如下错误 Unity报错:[Package Manager]Error Registry configuration is invalid:Unable to connect “https://packages.unity.cn” 翻了很多博发现是 unity3d 中国增强版的原因,中国增强版屏蔽了国外自定义的插件仓库。 安装 非中国增强版后可以成功打开。 然后大家给出的解决方案都比较激进,大抵就是更换Unity版本就OK了。 当然我是觉

Gipsyz的博客 6842

Eclipse创建Java接口及其内的抽象方法

Eclipse创建Java接口及其内的抽象方法

u010804417的博客 2407

【小白深度教程 1.3】使用 BP-Net 深度补全网络,进行 KITTI 稠密点云和图像融合(Depth Completion 实战)

在上一节中,我们展示了如何将从激光雷达获取的稀疏点云(深度)映射到图像。因此这篇论文我们尝试使用 Depth Completion(深度补全)技术,来将稀释的点云深度,补全为稠密深度。

2401_87064292的博客 1199

抽象类和抽象方法

这一节课,我们来了解一下抽象类和抽象方法。首先我们来了解一下什么叫做抽象类?我们创建一个类名字叫做颜色,那么这个颜色到底是红橙黄绿蓝靛紫中的哪个颜色呢?我们不知道对吧,所以这个时候这个颜色的类就是我们所说的抽象类。 抽 象 类 为了方便学习,这里我们直接上代码,大家可以在代码块里查看注释进行理解! 首先打开eclipse创建一个color类 public abstract class color {//抽象类不能实例化 //抽象类需要使用abstract来进行修饰 public vo

Z学堂 1022

【100%通过率】华为OD机试真题 Python 实现【水库蓄水问题】【2022.11 Q4 新题】

给定一个长度为 n 的整数数组height。数组的元素表示山的高度,选择两个元素作为水库的边界,求蓄水量的最大值并输出蓄水量最大时的边界下标(蓄水量相同时输出下标较近的)。

MISAYAONE的博客 1万+

数据科学技术与应用【中国大学MOOC】:数据可视化_第五次作业_答案

数据科学技术与应用 数据可视化 第五次作业 答案 题目来源:中国大学MOOC-东华大学-宋晖等-数据科学技术与应用 1 ( 30分 ) 2012—2017年我国人均可支配收入为[1.47, 1.62, 1.78, 1.94, 2.38, 2.60](单位:万元)。按照要求绘制以下图形。 1)模仿例4-1和例4-3,绘制人均可支配收入折线图。用小矩形标记数据点,黑色虚线,用注解标注最高点,图标题为“Income chart”,设置坐标轴标题,最后将图形保存为JPG文件。 2)模仿例4-2,使用多个子图分别绘制

Herbert胡不归 6140

抽象类与普通类、抽象类与接口的区别

抽象类与普通类、抽象类与接口的区别 1、抽象类的概念 抽象类必须使用abstract class声明一个抽象类中可以没有抽象方法。抽象方法必须写在抽象类或者接口中。 格式: abstract class 类名{ // 抽象类 } 2、抽象方法 只声明而未实现的方法称为抽象方法(未实现指的是:没有“{}”方法体),抽象方法必须使用abstract关键字声明。 格式: abstract class 类名{ // 抽象类 public abstract void 方法名() ; // 抽象方法,只声明而未实现

weixin_46223196的博客 448

mapbox进阶,dem数据转为等高面,加载转换后的等高面到地图

本文详细介绍如何基于mapbox-gl v3.*.* 版本,使用dem数据转为等高面,加载转换后的等高面到地图,亲测可用。希望能帮助到您。一起学习,加油!加油!

我哎GIS博客 407

JavaSe学习笔记07(抽象类、接口)

JavaSe学习笔记 day07

weixin_42845320的博客 330

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

JAVASE的学习笔记(四)(抽象类,代码块,接口)

JAVASE的学习笔记(四) 代码块 java中首先是静态块先执行,静态方法,最后是构造函数 普通代码块:是在方法内部中使用(普通代码块中定义的变量是局部变量作用范围只能在代码块的范围,并且名称不能和局部变量重复) 注意:执行子类的构造方法,先执行父类的构造方法,初始化代码优于构造方法之前执行,构造方法在new对象的时候执行,而静态语句块和静态方法在类加载到内存的时候就已经执行了。 初始化代码块:基本不使用,在创建对象的时候,我们会对成员变量进行初始化操作,是针对成员变量赋值使用(每次创建对象,初始化代码

qq_47267252的博客 262

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

javaSE学习笔记——第九天、多态、抽象类、接口

javaEE学习第九天 java知识 多态概述及其代码体现 A:多态(polymorphic)概述 事物存在多种形态 B:多态前提 a:要有继承关系。 b:要有方法重写。 c:要有父类引用指向子类对象。 代码演示: class Demo1_Polymorphic { public static void main(String[] args){ ...

影龙武的博客qq_43594119 412

javaSE 学习笔记关键字、抽象类、接口、数组

javase进阶 1.final关键字 final可以修饰变量、方法、类等 如果不希望对一个类进行扩展,可以给这个类加final关键字,这样的话这个类就无法继承了 final修饰的方法无法被覆盖或者重写 final修饰的变量一旦赋值就不能修改 final修饰的引用只能指向一个对象,对象内的数据可以改变 final修饰实例变量 eg final int age;错误,必须手动赋值 终极结论 static final联合修饰的变量称为常量,大写 常量和静态变量都是存储在方法区 2.抽象类和接口以及抽象类和接口的

qq_36451293的博客 130

javaSE学习笔记15-抽象类、Object类、接口、内部类

3.接口中的方法都是抽象的public abstract(编写时一般省略public abstract,系统自动识别,写出来也是灰色的)接口 关键字interface,接口只定义一些方法,接口都需要实现类来实现定义的这些抽象方法。约束和实现分离:---面向接口编程。6.接口可以被多实现,实现接口的关键字,implements。Test类,类中包含匿名内部类Apple,接口UserService。声明类的关键字是class,声明接口的关键字是interface。7.实现接口的类,必须要重写接口中的方法。

qq_57785748的博客 288

学习笔记(02):JAVASE——抽象类和抽象方法、接口

文章目录抽象类接口 抽象类 1.抽象类和抽象方法用 关键字:abstract来修饰 2.子类必须重写父类的抽象方法 3.有抽象类的不一定有抽象方法;有抽象方法的类一定是抽象类 4.抽象方法没有方法体 5.抽象类不能new(不能被实例化) 接口 java的接口是一些方法特征的集合,但没有方法实现。 1.接口不可以被实例化 2.接口中的所有成员都是public static final 3.接口中的方...

āáǎà 315

JavaSE学习笔记(八)—— 多态&抽象类&接口

一、多态 1.1 多态概述   多态是指,同一个对象(事物),在不同时刻体现出来的不同状态。   举例::   猫可以是猫的类型。猫 m = new 猫();   同时猫也是动物的一种,也可以把猫称为动物。动物 d = new 猫();   再举一个例子:   水在不同时刻的状态:液体,固体,气态 1.2 多态的前提 要有继承关系。 要有方法重写。 其实没有...

VNOpU2015的专栏 354

JavaSE学习笔记(5.抽象类与接口)

抽象类: 1.抽象类: 通过abstract修饰符描述的类,称之为抽象类;抽象类的成员为:方法(可以为普通方法,也可以是抽象方法)、成员变量、构造器、初始化块、内部类;抽象类不能实例化,只能当做父类被其子类继承! 2.抽象方法: 通过abstract修饰符描述的方法,称之为抽象方法;抽象方法不能有方法体存在,且抽象方法必须在抽象类中存在! 存在抽象方法(也包括继承自父抽象类或者接口的没有...

qq418674358的专栏 319

javaSE学习笔记(三)抽象类,接口,package,import,修饰符,内部类

static 因为类名调用抽象方法没有意义final abstract强制子类重写,final修饰的方法不能重写private abstract强制子类重写,private不让子类继承狭义上就是interface,广义上对外提供的规则都是接口package 包名;多级包用.分开即可package语句必须是程序的第一条可执行的代码package语句在一个java文件中只能有一个没有package,默认表示无包名。

给自己的程序生涯留下一点痕迹 286

学习笔记(30):70讲轻松通关JavaSE-抽象类和接口

【为什么学习Java?】 1.因为Java是全球排名第一的编程语言,Java工程师也是市场需求最大的软件工程师,选择Java,就是选择了高薪。 2.Java语言常年霸占着三大市场: 互联网和企业应用,这是Java EE的长期优势和市场地位; 大数据平台,主要有Hadoop、Spark、Flink等,他们都是Java或Scala(一种运行于JVM的编程语言)开发的;...

qq_21704131的博客 241

JavaSE学习笔记——代码块、final关键字、抽象类、模板设计模式、接口、内部类

Day09代码块(初始化块)final关键字抽象类abstract关键字抽象类的应用思考练习模板设计模式接口 代码块(初始化块) 1. 作用: 对Java对象进行初始化 2. 程序的执行顺序: (1)声明成员变量的默认值; (2)显式初始化、多个初始化块依次被执行(同级别下按先后顺序执行); (3)构造器再对成员进行赋值操作。 3. 语法结构: 修饰符 class 类名{ { 语句; } ...

MCC 439

刘意JavaSE 学习笔记 Day7-Day11——面向对象(封装、继承、多态、初始化、static、this、抽象类、接口)

3【重点难点】面向对象(封装、继承、多态、初始化、static、this、抽象类、接口) day07 匿名对象,封装,private,this,构造方法,static day08 继承,初始化 day09 多态,抽象类,接口(极其重要) day10 package 访问权限 内部类 day11 eclipse 以上花5天时间   第四天 成员变量和局部变量的区别(理解)     ...

desperatecat的博客 568

JavaSE 每天一点思维导图笔记总结(不断更新中…)

JavaSEservelt01 (4.24) servelt01 (4.24)

weixin_43774841的博客 699
上一篇: 【JAVA_SE】作业练习1022
下一篇: 【JAVASE_学习笔记】多态
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值