Java基础笔记:Day_09 单例、final、抽象方法和抽象类

双通道中频信号数字下变频及相位差估计(FPGA) 双通道中频信号数字下变频及相位差估计实验 一、上框图(通俗易懂) 二、实验要求 1、 用点频信号模拟中频信号:中频信号由DDS1和DDS2产生。具体产生方法见第2点。 2、 DDS1和 DDS2:调用IPcore里的数字信号处理中的NCO模块,工作时钟为100MHz,数据率即为100MHz,DDS1和DDS2的频率为:(学号后三位+500)Khz+f0(可设为20MHz);输出为16位;DDS1... 阅读详情

一、代码块

什么是代码块:
在类或者在方法中,直接使用"{}"括起来的一段代码,表示一块代码区域。
代码块里变量属于局部变量,只在自己所在区域(前后的{})内有效。
根据代码块定义的位置的不同,我们又分成三种形式:
1):局部代码块:直接定义在方法内部的代码块:
2):初始化代码块(构造代码块):直接定义在类中.
3):静态代码块:使用static修饰的初始化代码块.
使用static修饰的初始化代码块,就叫静态代码块。一个成员,不加static属于对象,加static属于类。在主方法执行之前,执行静态代码块,只执行一次。main()方法是程序入口,为何静态代码块优先于main方法。静态成员随着字节码加载而加载进入JVM,此时main方法未执行,因为方法需要调用。先把字节码加载进入JVM,而后JVM调用main方法。一般的,我们用来做初始化操作,加载资源,加载配置文件。

具体使用情况如下:

class CodeBlockDemo 
{
	{
		//--------初始化代码块------//
		System.out.println("初始化代码块");//编译后,此句进入构造。
		//--------------------------//	
	}

	CodeBlockDemo()
	{
		System.out.println("构造器");
	}

	static
	{
		//--------静态代码块------//
		System.out.println("静态代码块");
		//--------------------------//	
	}

	public static void main(String[] args) 
	{
		{//局部代码块
			int age = 17;
			System.out.println(age);

		}
		
		System.out.println("进入main()方法");
		//创建三个CodeBlockDemo对象
		new CodeBlockDemo();
		new CodeBlockDemo();
		new CodeBlockDemo();

	}
}
/*
	非static字段的初始化是在构造器中优先执行的
	static成员通过静态代码块做初始化的
*/

但是通过反编译之后,我们可以看到:
在这里插入图片描述
二、final修饰符

关于final修饰符:
多个修饰符之间是没有先后关系的,如:public static / static public
final表示可以修饰类,方法,变量(均为非抽象)
(构造器不能使用final修饰)

①final修饰的类: 表示最终类,不能再有子类了。
一般的,这些类设置为final类:
1.本类不是为继承而设计的。
2.除以安全考虑,不允许子类改动,不准修改源代码。
3.确定该类不会再拓展。
② final修饰的方法:最终方法,该方法不能被子类覆盖。
一般的,这些方法设置为final方法:
1.在父类中,提供统一的算法骨架,就不准子类通过方法覆盖
2.在构造器中,调用的方法(初始化方法)。初始化方法一般使用final修饰
final修饰的变量:表示常量,只能赋值一次。不能再次赋值
final是唯一可以修饰局部变量的修饰符,必须做一次初始化。
常量的命名规范:
单词全部使用大写字母,若多个单词组成,使用下划线隔开
全局静态常量:public static final 修饰的变量,直接使用类名调用即可
final修饰的引用类型变量到底是表示引用的地址不能被改变?或是引用空间的数据不能改变
答:

	class Person
    {
    	public String info = "初值";
    }	
    class  FinalDemo
   {
    	public static void main(String[] args) 
 	    {
    		final Person p = new Person();
    		System.out.println(p.info);
    		p.info = "xxx";
    		System.out.println(p.info);
    	}
   }
    //如上:不能重新分配内存地址,但是空间内容是可以改变。
    //一般的,此时我们使用final修饰变量
    //当在程序中,多个共同的地方使用数据,且此数据不会改变

三、单例设计模式

保证在整个项目中,某一个类有且仅有一个实例(一个类在内存中只有一个对象)
即所有指向该类型的引用都指向同一块内存

如需求:定义一个数组的工具类,使用单例模式解决
单例的编写有N种写法,单讲一种:饿汉式
必须在该类中先自己创建一个对象
私有化自身的构造器,防止外界通过构造器创建新对象
向外暴露一个公共静态方法用于获取自身的对象

class ArrayUtil
{
	//必须在该类中,自己先创造一个对象
	private static final ArrayUtil instance = new ArrayUtil();
	//私有化自身的构造器,防止外界通过构造器创建写的对象
	private ArrayUtil(){}
	//向外暴露一个公共静态方法用于获取自身的对象
	public void sort(int[] arr)
	{
		System.out.println("排序");
	}
	public static ArrayUtil getInstance()
	{
		return instance;
	}
}

class  SingletonDemo
{
	public static void main(String[] args) 
	{
		//ArrayUtil arr = new ArrayUtil();//此句话将报错 错误: ArrayUtil()可以在ArrayUtil中访问private
		System.out.println(ArrayUtil.getInstance() == ArrayUtil.getInstance());
		ArrayUtil.getInstance().sort(null);
	}
}

四、基本类型包装类

问题1:在面向对象中,“一切皆对象”,现在问题来了。int age = 17 此代码哪有对象?
矛盾点:基本类型变量不是对象此时有矛盾。

问题2:现在给你一个复杂的十进制数据,以最快的速度在程序中转换成二进制,八进制,十六进制
矛盾点:算法太麻烦了

问题3:现在使用double表示学生考试成绩,但是你怎么表示一个人缺考和考试得零分。
矛盾点:double初值为0.0

上述的问题,进就是因为基本数据类型缺少对象,如果需要对象,必须先有类.
此时我们可以为每一个基本类型都编写一个对应的包装类,类中包含了该基本类型的一个值.比如针对第二个问题,我们把int类型进行包装:

//包装int类型的值
public  class IntWapper
{
      private   int  value;//值
      public  IntWapper(int value)
      {
              this.value   =  value;
      }
      //包含int类型相关的算法,把十进制转换2进制/8进制/16进制
}
....main......
{
     IntWapper wapper = null; //没有对象,没有数据
     IntWapper wapper = new IntWapper(0);
}

那么,我们将八大基本数据类型一一包装之后,就可以得到:在这里插入图片描述
(以上几个类,都是由final修饰过的,因此不能存在子类对其进行继承)
装箱:把基本类型数据转成对应的包装类对象。
拆箱:把包装类对象转成对应的基本数据类型数据。
Sun公司从Java5开始提供了的自动装箱(Autoboxing)和自动拆箱(AutoUnboxing)功能 :
自动装箱:可把一个基本类型变量直接赋给对应的包装类变量。
自动拆箱:允许把包装类对象直接赋给对应的基本数据类型变量。

class Demo
{
	public static void main(String[] args)
	{	
		//手动装箱
		Integer i1 = new Integer(17);
		Integer i2 = Integer.valueOf(17);
		//推荐i2 因为该方法有可能通过缓存经常请求的值而显著提高空间和时间性能
		System.out.println(i1.equals(i2));
		System.out.println(i1 == i2);
		//手动拆箱
		int i3 = i2.intValue();	

		//自动装箱:
		Integer a1 = 17;//编译:Integer a1 = Integer.valueOf(17)
		//自动拆箱		
		int a2 = a1;	//编译:int a2 = a1.intValuel
	}
}

包装类中的缓存设计(享元模式),本质就是缓存设计:
Byte、Short、Integer、Long:缓存[-128,127]区间的数据;
Character:缓存[0,127]区间的数据;

//包装类的缓存Cache
class  CacheDemo
{
	public static void main(String[] args) 
	{
		Integer i1 = new Integer(123);
		Integer i2 = new Integer(123);
		System.out.println(i1 == i2);	//false 每次new都开辟新空间,==比较内存地址

		Integer i3 = Integer.valueOf(123);
		Integer i4 = Integer.valueOf(123);
		System.out.println(i3 == i4);	//true	在(-128,127)范围,就获取缓存中的数据,并没有new

		Integer i5 = 123;
		Integer i6 = 123;
		System.out.println(i5 == i6);	//true  自动装箱底层也为手动装箱,也就是i3,i4那种方式
		
		System.out.println("---------------------------------------");

		Integer i11 = new Integer(321);
		Integer i22 = new Integer(321);
		System.out.println(i11 == i22);	//false

		Integer i33 = Integer.valueOf(321);
		Integer i44 = Integer.valueOf(321);
		System.out.println(i33 == i44);	//false	 321不在(-128,127),就new一个Integer

		Integer i55 = 321;
		Integer i66 = 321;
		System.out.println(i55 == i66);	//false

		System.out.println(i55.equals(i66));	//true
		//其底层把包装类类型拆箱为基本类型,再比较其值
		//包装类比较数据用equals,即使是数值在-128和127之间。
	}
}

1.默认值:int默认值为0,Integer默认值为null
Integer既可以表示null,也可以表示0。
2.包装类提供了该类型相关的许多算法与操作方法。
如:static String toBrinaryString(int i);
static String toOctalString(int i);
static String toHexString(int i);
3.在集合框架中,只能存储对象类型,不能存储基本数据类型值
4.int和Integer是同一种类型吗?
不是。但同名方法可以共存。
5.方法中的基本类型变量主要存储在栈中,包装类存放于堆中。
开发中建议使用包装类型。

五、抽象方法和抽象类

引出抽象方法:
假如一个图形都有“求面积”这个概念,那么无论是圆,正方形,三角形,我们都对其要求面积。
我们把它抽象为Graph类,我们可以把矩形,圆形继承Graph类。
但是我们传入的参数不一样,比如圆形的R,矩形的width和height。
子类求面积的方法也是不同的。
所以子类必须覆盖求面积的方法。

	class Graph
	{
		return 0.0;
	}
	class Circle extends Graph
	{
		...CODE...
		public double getArea(){}
	}
	class Triangle extends Graph
	{
		...CODE...
		public double getArea(){}
	}

此时,我们可以试着使用abstract关键字对其进行修饰
使用abstract修饰且没有方法体的方法,称为抽象方法。
特点:
① 使用抽象abstract修饰,方法没有方法体,留给子类去实现/覆盖。
② 抽象方法修饰符不能是private 和 final以及static。
③ 抽象方法必须定义在抽象类或接口中。
一般的:习惯性把abstract写在方法修饰符最前面,一看就知道是抽象方法。

使用abstract关键字修饰的类。
特点:
① 不能创建实例即不能new一个抽象类,即使创建出抽象类对象,调用抽象方法,根本没有方法体。
② 可以不包含抽象方法,若一旦包含,该类必须作为抽象类,抽象类可以包含普通方法(留给子类调用的),抽象类是有构造器的,子类构造器必须先调用父类构造器。
③ 若子类没有实现/覆盖父类所有的抽象方法,那么子类也得作为抽象类(抽象派生类)。
④ 构造方法不能都定义成私有的,否则不能有子类(创建子类对象前先调用父类构造方法)。
⑤ 抽象类不能使用final修饰,因为必须有子类,抽象方法才能得以实现。
⑥ 是不完整的类,需作为父类(必须要有子类),功能才能得以实现。
抽象类:一般的,我们起名,习惯使用Abstract作为前缀,让调用者一看就知道是抽象类.
抽象类中可以不存在抽象方法,如此这样没有太大的意义,但是可以防止外界创建对象,所以我们会发现有些工具类没有抽象方法,但是也使用abstract来修饰…

抽象类不能实例化:

抽象类和普通类的区别:
普通类有的成员(方法,字段,构造器),抽象类都有。
抽象类不能创建对象,抽象类中可以包含抽象方法。

点云数据增强及预处理 数据增强: 1. random world flip:沿着x或者y轴,翻转点云 点云的x或者y,要翻转 3d box中心的x或者y,要翻转 3d box的朝向要翻转 point segmentation label,点云的相对顺序没有发生变化 2. random_world_rotation:沿着点云原点,旋转点云 点,x,y,绕z轴旋转 3d box,绕z轴旋转,中心和朝向都要变化 point segmentation label,点云的相对顺序没有发生变化 3. random_world_scaling 阅读详情

相关推荐

Jetson Nano官方镜像下载&烧录

在NVIDIA Jetson Nano开发者套件上安装NVIDIA官方Ubuntu镜像

weixin_44222088的博客 8845

抽象方法

抽象方法必须有abstract修饰

qq_40574750的博客 203

边云协同智能进化:大模型与小模型的动态训练与高效部署策略

本文深入探讨了边云协同架构下大模型与小模型的动态训练与高效部署策略。通过物流分拣、医疗影像等实战案例,展示了如何利用边云协作框架实现AI模型的智能进化,显著提升处理效率与准确性。重点解析了动态任务分配、增量学习和知识蒸馏等关键技术,为分布式训练场景提供优化方案。

work3的博客 191

[译]lambda表达式对 SAM (单个抽象方法类)type的处理方式

在阅读Venkat Subramaniam的著作《Functional Programming in Java》 之后,方法模式和lambda完美结合让我印象深刻。 这种模式经常用作数据源处理,但也适用于类似的情况。这种模式可以让你集中注意力在核心功能点上,而不用担心类里面有过多重复的代码。 这里创建了一个事务处理作为事例。 接口 Transaction,他有一个执行方法。 impor...

weixin_30739595的博客 254

matlab 用m_map画地形水深图

clear,clc %投影 m_proj('albers equal-area','lat',[5 43],'long',[105 125],'rect','on'); %加载水深文件 [CS,CH]=m_etopo2('contourf',[-7000:500:3000],'edgecolor','none'); %绘制高分辨率陆地和海岸线 m_gshhs_h('patch',[0.1 0.9 ...

qq_44913577的博客 9511

Springboot+Vue 实现鸿蒙商城管理系统开发实践

通过使用 Springboot 和 Vue 技术栈,我们成功实现了鸿蒙商城管理系统的开发。系统具备用户管理、商品管理、订单管理、库存管理和统计分析等功能,支持 Web 端和鸿蒙端的访问和操作。在开发过程中,我们充分利用了 Springboot 的快速开发优势和 Vue 的组件化开发特点,提高了开发效率和系统的可维护性。同时,通过与鸿蒙设备的集成,实现了多设备之间的数据交互和协同工作,提升了用户体验。

ZXJ_SXT的博客 1324

Java面向对象,基本类型包装类

贝壳信息 2017-05-24 17:32 在面向对象中,有一个概念:“一切皆对象”。现在问题来了: “int age = 17;”,这句代码中是否存在对象呢?答案是没有,因为基本类型不是对象,那不是有矛盾? 现在给你一个复杂的十进制数据,请你迅速在程序中转换为2进制、8进制、16进制,算法是不是很麻烦? 现在使用double类型来表示学生的考试成绩(double类

u011277123的博客 810

【通信协议-RTCM】MSM语句(1) - 多信号GNSS观测数据消息格式

注释:RTCM响应消息1020为GLONASS星历信息,暂不介绍,前公司暂未研发RTCM消息类型版本的DR/RTK模块,DR/RTK模块仅NMEA消息类型使用注释:公司使用的多信号语句类型为MSM4&MSM7,也应该是运用最广泛的语句类型,例如本人之前在公司开发的工具全是基于MSM7语句类型来进行的。

qxj2422640226的博客 2092

Java学习day09:super、final关键字,抽象类和接口

Java学习day09:super、final关键字,抽象类和接口

LF__plus的博客 553

DELPHI11 利用Android手机实现条码扫描功能

好了,整个过程全部结束,当然这只是最简单的例子,只是演示一下如何识别条码,更多的条码处理功能,比如优化,提速等需要在后面继续。安装过程中所有提示框全部按OK就可以,直到提示安装成功,那么ZXing库就成功完成了安装。点击红框标识的文件夹图标,将下载的ZXing库文件路径加入进来后,点ADD。第三步:选择下载的ZXing库路径,并按Ctrl + A进行全选,并导入。至此为止,我们的库才算是全部安装完成,可以在DELPHI 中正常引用了。2.打开相机,识别条码,并将条码内容显示在MEMO1中。

1529

Python自动化:3分钟搞定微信收藏链接批量导出到TXT(附完整代码)

本文介绍如何使用Python自动化工具在3分钟内将微信收藏链接批量导出到TXT文件。通过模拟人类操作和OCR技术,脚本高效处理大量链接,显著提升工作效率,并附有完整代码和实战避坑指南。

weixin_29062671的博客 628

day02【抽象类,接口、代码块、final、单例、枚举】

abstract是抽象的意思,用于修饰方法方法和类,修饰的方法是抽象方法,修饰的类是抽象类。我们已经学完了抽象类,抽象类中可以用抽象方法,也可以有普通方法,已经构造器,成员变量等。那么什么是接口呢?接口是更加彻底的抽象,接口中全部是抽象方法。(JDK8之前),接口同样是不能创建对象的。//接口的定义格式: 修饰符 interface 接口名称 {// 抽象方法 } // 修饰符:public|缺省 // 接口的声明:interface // 接口名称:首字母大写,满足“驼峰模式”

Abdul_DD的博客 286

基于Multisim/TINA的H桥电机驱动电路设计与仿真分析

摘要 本文基于Multisim/TINA仿真平台,对H桥电机驱动电路进行了系统设计与分析。研究重点包括H桥拓扑结构的工作原理、PWM调速控制方法以及两种驱动方案对比分析。通过光耦隔离驱动与IR2110专用驱动IC的仿真对比,验证了IR2110自举电路在高低侧驱动中的优势。仿真实验着重分析了死区时间对防止直通现象的关键作用,并建立了直流电机的R-L-E等效模型进行动态特性仿真。结果表明,采用IR2110驱动方案配合适当的栅极电阻和自举电容参数,能够实现电机的高效双向调速控制。本研究为实际电机驱动系统的设计提供

huanghm88的专栏 137

【java 13天进阶Day02】抽象类、接口、代码块,final、单例、枚举

ps:在Spring Boot中,通常推荐使用接口进行依赖注入,而不是具体的实现类。开发中有很多类的对象我们只需要一个,例如虚拟机对象,任务管理器对象,对象越多约占内存,有些时候只需要一个对象就可以实现业务,单例可以节约内存,提高性能。接口体现的是规范思想,实现接口的子类必须重写接口的全部抽象方法。如果实现了多个接口,多个接口中存在同名的静态方法并不会冲突。当一个类实现多个接口时,多个接口中存在同名的默认方法。接口与接口的多继承(类与类是单继承、类与接口多实现),类与类是继承关系,类与接口是实现关系。

weixin_45658815的博客 1031

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Java基础6 final、枚举、抽象类、接口

用abstract修饰的类,不能直接实例化,需被子类继承。概念核心作用典型应用场景final防止修改(常量、不可继承)配置参数、工具类单例模式全局唯一实例数据库连接池、日志管理器枚举类定义固定常量集状态码、选项配置抽象类定义方法骨架,强制子类实现模板方法模式、通用功能复用接口定义规范,支持多继承设备标准(如 USB)、插件扩展模板方法模式固定流程,灵活步骤实现算法骨架(如烹饪、订单处理)

weixin_72158155的博客 1127

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Java 入门必学:final、单例、枚举、抽象类、接口

/ 抽象方法System.out.println("睡觉");final→ 限制(不能改/不能继承)单例→ 控制对象数量枚举→ 固定常量集合(更安全)抽象类→ “是什么”(is-a)接口→ “能做什么”(can-do)接口定能力,抽象类做模板,枚举管常量,单例控实例,final保约束如果你想继续深入,我可以帮你👇✅ 出一套「面试高频考题(final/接口/单例)」✅ 或做「设计模式入门(含代码实战)」✅ 或带你写一个“小项目综合应用这些知识点”

likuolei的博客 340

day02-抽象类,接口、代码块、final、单例、枚举

java基础【抽象类,接口、代码块、final、单例、枚举】 第一章 抽象类 1.1 概述 1.1.1 抽象类引入 父类中的方法,被它的子类们重写,子类各自的实现都不尽相同。那么父类的方法声明和方法主体,只有声明还有意义,而方法主体则没有存在的意义了(因为子类对象会调用自己重写的方法)。换句话说,父类可能知道子类应该有哪个功能,但是功能具体怎么实现父类是不清楚的(由子类自己决定),父类完全只需要提供一个没有方法体的方法签名即可,具体实现交给子类自己去实现。我们把没有方法体的方法称为抽象方法。Java语法规定

后端麻酱的博客 201

day09 多态抽象类接口

1:final关键字可以干什么?有什么特点? 2:final关键字的面试题? 3:多态是什么,前提是什么? 4:多态中成员访问的特点? 5:多态的好处及弊端?如何解决多态的弊端? 6:什么是向上转型?什么是向下转型? 7:多态练习 8:抽象类概述及其特点? 9:抽象类成员特点? 10:抽象类练习? 11:抽象类的小问题 12:接口的概述及其特点? 13:接口的成员特点? 14:接口的练习 15:抽象类和接口的区别?

喝醉酒的小白 4232

java学习笔记day09 final、多态、抽象类、接口

java学习笔记day09 思维导图 final 、 多态 、 抽象类 、 接口 (都很重要) 一、final 二、多态 多态中的成员访问特点⭐ 【P237】 多态的好处 【P239] 多态的弊端 向上转型、向下转型 ⭐【P241】 形象案例:孔子装爹 多态的问题理解: class 孔子爹 { public int age = 40; public void teach() { System.out.println("讲解JavaSE"); }

时雨的博客 319

java-抽象方法与抽象类

e[0]=new SalariedEmployee("马国森", 123, new Mydate(2001, 1, 1),5000);return "姓名,"+name+"数字,"+number+"生日"+birthday.toDateString();e[1]=new HourlyEmployee("王悦",123,new Mydate(2001,2,2),32,5);return year+"年"+month+"月"+day+"日";2、此方法称为抽象方法,此方法只有方法的声明,没有方法体。

qq_50926201的博客 869

day031:抽象类、抽象方法、final关键字

一、抽象方法概述 抽象方法:将共性的行为(方法)抽取到父类之后,发现该方法的实现逻辑无法在父类中给出具体明确,该方法就可以定义为抽象方法。 抽象类:如果一个类中出现了抽象方法,则这个类就必须定义为抽象类。 举例解释:猫类中有吃饭、喝水两个方法,狗类中也有吃饭、喝水两个方法,所以可以将这两个方法抽取为一个父类Anmial。但猫吃鱼、狗吃肉,吃饭这个方法无法在父类Anmial中具体明确(到底是定义为吃肉还是吃鱼呢?),所以可以将这个父类Anmial定义为抽象类,该类中的吃饭方法为抽象方法。用abstra

ZuoQi的博客 442

java笔记 Day 16 —— final关键字、抽象类

文章目录一、final关键字二、抽象类(abstract)抽象类的最佳实践—模板设计模式 一、final关键字 基本介绍 final 中文意思:最后的,最终的 final 可以修饰类、属性、方法 和 局部变量 在有以下需求的时候,就会使用到final: 当不希望类被继承的时候,可以使用 final来修饰[final class 类名] 当不希望父类的某个方法被子类覆盖/重写(Override)时,可以使用final关键字来修饰[访问修饰符 final 返回类型 方法名] 当不希望类的某个属性的值被修改

dfsdcvbhjnj的博客 295

Java基础day9(重写,多态,final、static关键字,抽象方法,抽象类)

(重写) 重写 重写前提: 前提是子类必须继承了父类 如果子类继承了父类以后,如果父类的方法满足不了我的要求,我可以在子类对父类的方法进行重写 重写的规则 子类的方法名、返回值类型必须和父类的方法名和返回类型一致 子类的访问修饰符不能小于父类的修饰符 子类和父类方法必须同为static或非static 多态 什么是多态?就是一个对象的多种形态 使用的多态的前提必须有继承或者接口的实现 1....

khhxuke的博客 281

0基础学java之Day14(Object、final、抽象类、接口)

/抽象类public abstract class 类名{//抽象方法为什么需要有抽象类父类是代表众多子类的共同特征,父类中的成员变量(即属性)、成员方法(即功能)是所有子类都有的。当事物的分类层次变多之后,越上层的父类成员越少,越上层的父类会变的越来越抽象。甚至出现在父类中某个方法无法给出适用于所有子类的方法体实现。

2301_81594623的博客 728

13天进阶Java笔记-day2-抽象类、接口、代码块、final、单例、枚举

父类指导子类一定要完成某个功能,但是每个子类完成的情况是不一样的。子类以后也只会用自己重写的功能,那么父类的该功能就可以定义成抽象方法,子类重写调用自己的方法。所以父类的该功能就可以定义为抽象的方法。拥有重写方法的类必须定义为抽象类。 抽象类的使用 抽象类是为了被子类继承 抽象类的特征 抽象类的特征是:有得有失抽象类存在的意义有两点:设计模式:就是前人或者软件行业在生产实战中发现的优秀软件设计架构和思想。后来者可以直接用这些架构或者思想就可以设计出优秀的软件,提高开发效率,提高软件可扩展性和可维护性。模板

qq_36178962的博客 277

面向对象day05(final;static final+常量;抽象方法;抽象类)

java三大特征:封装、继承、多态 一、final:最终的,不可改变的————单独应用几率低 1)修饰变量:变量不能被改变 2)修饰方法:方法不能被重写 3)修饰类:类不能被继承 (final的类不能被别人继承,但是它可以继承别人) 在Java中,方法默认是都能被重写的 class Aoo{ final int num = 5; void show(){ num = 55; 编译错误,final变量不能被改变 } } 二、static final常量(很常用)还是存数的 1)必须声明同时初始化 2)通过类名

qq_44949668的博客 145

JAVA基础day09

JAVA基础day09 文章目录JAVA基础day09final注意事项tips类加载顺序抽象类注意事项:why need?tips:模板方法what?接口定义深入了解instanceofinstanceof final final修饰的变量称之为最终常量 在程序运行期间其值不可发生改变 final修饰的类不可以被继承:太监类 final修饰的方法不可以被重写 注意...

weixin_41615926的博客 181
上一篇: Java基础笔记:Day_08 继承与多态
下一篇: Java基础笔记:Day_10 接口、匿名内部类
Panda不姓潘
博客等级 码龄8年 152粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值