当前位置: 首页 > news >正文

【第六章 final、abstract】

第六章 final、abstract

1.final:最终的
①final可以用来修饰的结构:类、方法、变量;
②final 用来修饰类:此类不能被其他类所继承,比如:String类、System类、StringBuffer类;
③final 用来修饰方法:表明此方法不可以被重写,比如Object中的getClass();
④final 用来修饰变量:此时的“变量”就称为一个常量
a.final 修饰属性;可以考虑赋值的位置有:显式初始化、代码块中初始化、构造器中初始化;
b.final修饰局部变量:尤其是使用final修饰形参时,表明此形参是一个常量,当我们调用此方法时,给常量形参赋一个实参,一旦赋值以后,就只能在方法体内使用此形参,但不能进行重新赋值;
c.static final :用来修饰属性:全局常量。
2.abstract:抽象的
①abstract用来修饰的结构:类,方法;
②abstract修饰类:抽象类
a.此类不能实例化;
b.抽象类中一定有构造器,便于子类实例化时使用(涉及、子类对象实例化的全过程);
c.开发中,都会提供抽象类的子类,让子类对象完成相关的操作。
③abstract修饰方法:抽象方法
a.抽象方法只有方法的声明,没有方法体;
b.包含抽象方法的类一定是一个抽象类;反之,抽象类中可以没有抽象方法。
c.若子类重写了父类中的所有抽象方法后,此子类方可实例化;若子类没有重写父类中的所有抽象方法后,此子类也是个抽象类,需要abstract修饰。
④abstract不能用来修饰:属性,构造器等结构。
⑤abstract不能用来修饰私有方法,静态方法,final的方法、final的类

package day6;
/**
 * @author 26312
 */
public class AbstractTest {
	public static void main(String[] args) {
	}
}
abstract class Creature{
	public abstract void breath();
}
abstract class Person1 extends Creature{
	String name;
	int age;
	public Person1() {
	}
	public Person1(String name, int age) {
		this.name = name;
		this.age = age;
	}
	public abstract void eat();
	public void walk() {
		System.out.println("人走路");
	}
}
 class Student extends Person1{
	 public Student(String name,int age) {
		super(name,age);
	}
	 public void eat() {
		System.out.println("学生应该多吃有营养的事物!");
	}
	 public void breath() {
		System.out.println("学生应该呼吸新鲜的没有雾霾的空气");
	}
}

相关文章:

  • 【JavaEE初阶】文件操作 和 IO (上篇)
  • Spring教程-01-IOC控制反转
  • Spring Cloud Gateway过滤器配置
  • Tomcat服务
  • REDIS05_SpringBoot整合redis、RedisTemplate操作各个基本类型、工具类的抽取
  • Sentinel的安装与配置
  • 生命周期函数
  • Go语言学习笔记——正则表达式
  • 无线传感器网络数据压缩与融合及安全机制的matlab仿真
  • 【C++】红黑树的性质以及实现
  • 软件测试 -- 入门 4 软件测试原则
  • java毕业设计慢性病管理mybatis+源码+调试部署+系统+数据库+lw
  • java毕业设计旅游攻略开发系统mybatis+源码+调试部署+系统+数据库+lw
  • 工具篇 | 07 | maven
  • 数据结构——线性表之顺序表
  • - C#编程大幅提高OUTLOOK的邮件搜索能力!
  • happypack两次报错的问题
  • HTTP请求重发
  • magento 货币换算
  • Mocha测试初探
  • RedisSerializer之JdkSerializationRedisSerializer分析
  • Redis在Web项目中的应用与实践
  • scala基础语法(二)
  • 工作手记之html2canvas使用概述
  • 回顾 Swift 多平台移植进度 #2
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 系统认识JavaScript正则表达式
  • 一起参Ember.js讨论、问答社区。
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • #ubuntu# #git# repository git config --global --add safe.directory
  • (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133
  • (论文阅读31/100)Stacked hourglass networks for human pose estimation
  • (三分钟)速览传统边缘检测算子
  • (十二)devops持续集成开发——jenkins的全局工具配置之sonar qube环境安装及配置
  • (转载)从 Java 代码到 Java 堆
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
  • *++p:p先自+,然后*p,最终为3 ++*p:先*p,即arr[0]=1,然后再++,最终为2 *p++:值为arr[0],即1,该语句执行完毕后,p指向arr[1]
  • .bat批处理(五):遍历指定目录下资源文件并更新
  • .net core 连接数据库,通过数据库生成Modell
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .NET 解决重复提交问题
  • /var/log/cvslog 太大
  • :=
  • @for /l %i in (1,1,10) do md %i 批处理自动建立目录
  • @param注解什么意思_9000字,通俗易懂的讲解下Java注解
  • @基于大模型的旅游路线推荐方案
  • [ C++ ] template 模板进阶 (特化,分离编译)
  • [ CTF ] WriteUp- 2022年第三届“网鼎杯”网络安全大赛(朱雀组)
  • [BZOJ] 2427: [HAOI2010]软件安装
  • [C#基础知识]专题十三:全面解析对象集合初始化器、匿名类型和隐式类型
  • [C++]拼图游戏
  • [C++核心编程](四):类和对象——封装
  • [CLR via C#]11. 事件
  • [datastore@cyberfear.com].Elbie、[thekeyishere@cock.li].Elbie勒索病毒数据怎么处理|数据解密恢复
  • [Electron]ipcMain.on和ipcMain.handle的区别