前言

在没讲抽象类之前  我们先来看看 final关键字

final 修饰符 可以修饰 类、属性、方法

修饰类时  表示该类不能被继承   其他特征 跟普通的类一样

修饰 属性时 表示 改属性不能改变 并且 必须赋初始值

修饰方法时  表示该方法不能被重写

什么是抽象类?

为什么要使用抽象类?

当我们在写继承时  一般实现时用不到父类 不需要实例化对象  这个时候我们就把这个父类定义为抽象类

也就是说抽象类本身没有实际意义 但是在编写继承或者多态程序时 又不得不定义父类  所有这个时候我们就把父类定义为抽象类俗称抽象父类

抽象类是用abstract 来修饰   抽象类的特点就是不能实例化对象 但是抽象类跟其他类一样 可以被继承

什么是抽象方法?

抽象类中的方法一般在继承和多态时 抽象类都不能创建对象 所有抽象类里面的方法也就没多大用处 但是 抽象类中不可能不定义方法 这个时候我们就将该方法定义为抽象方法

抽象方法的三个特征

1、抽象方法没有方法体

2、抽象方法必须存在于抽象类中

3、必须在子类中重写父类中的抽象方法

方法重写的几大注意事项:

1、子类中方法的名字必须跟父类方法的名字一样

2、子类中方法的参数必须跟父类中的方法参数一样

3、子类中方法的返回值要么跟父类的一样 要么是父类返回值类型的子类

4、子类中的访问权限必须大于等于父类中的访问权限

下面来看一个例子:

abstract class Pet

{

public abstract void eat();

}

class Dog extends Pet

{

public void eat(){

System.out.println("狗吃骨头");

}

}

class Cat extends Pet

{

public void eat(){

System.out.println("猫吃鱼");

}

}

class Nature

{

public void law(Pet p){

p.eat();

}

}

class TestAb

{

public static void main(String[] args)

{

Nature nature = new Nature();

nature.law(new Dog());

nature.law(new Cat());

}

}

接口

接口也是多态的另一种表现形式

语法  interface 接口名{}

需要注意的是接口跟抽象类中的属性和方法有以下区别:

1、接口中的属性默认必须修饰符为public、static、final  缺哪个jvm会自动补哪个

2、 接口中没有构造方法 不能被实例化  抽象类也是不能被实例化

3、接口中的所有方法必须是public、abstract  缺少哪个补哪个

4、接口之间可以多继承

5、一个类可以实现多个接口

6、接口没有继承object类

java抽象类的属性_java抽象类详解相关推荐

  1. java父类引用子类属性_Java多态性详解——父类引用子类对象

    面向对象编程有三个特征,即封装.继承和多态. 封装隐藏了类的内部实现机制,从而可以在不影响使用者的前提下改变类的内部结构,同时保护了数据. 继承是为了重用父类代码,同时为实现多态性作准备.那么什么是多 ...

  2. java合法的数组声明_Java数组详解

    Java数组详解 数组详解 1.数组概述 数组是相同类型数据的有序集合 每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们 2.数组声明和创建 ①数组声明形式 dataType[] a ...

  3. java list取值_Java集合详解

    一.集合的由来 通常,我们的程序需要根据程序运行时才知道创建多少个对象.但若非程序运行,程序开发阶段,我们根本不知道到底需要多少个数量的对象,甚至不知道它的准确类型.为了满足这些常规的编程需要,我们要 ...

  4. java 枚举使用例子_Java枚举详解及使用实例(涵盖了所有典型用法)

    在实际编程中,往往存在着这样的"数据集",它们的数值在程序中是稳定的,而且"数据集"中的元素是有限的. 例如星期一到星期日七个数据元素组成了一周的"数 ...

  5. java模型给泛型_java 泛型详解-绝对是对泛型方法讲解最详细的,没有之一

    对java的泛型特性的了解仅限于表面的浅浅一层,直到在学习设计模式时发现有不了解的用法,才想起详细的记录一下. 1. 概述 泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应 ...

  6. java 1.8 泛型_Java 泛型详解

    原标题:Java 泛型详解 引言 泛型是Java中一个非常重要的知识点,在Java集合类框架中泛型被广泛应用.本文我们将从零开始来看一下Java泛型的设计,将会涉及到通配符处理,以及让人苦恼的类型擦除 ...

  7. java泛型常用特点_Java泛型详解

    对java的泛型特性的了解仅限于表面的浅浅一层,直到在学习设计模式时发现有不了解的用法,才想起详细的记录一下. 本文参考java 泛型详解.Java中的泛型方法. java泛型详解 1. 概述 泛型在 ...

  8. java threadpoolexecutor 返回值_Java ThreadPoolExecutor详解

    ThreadPoolExecutor是Java语言对于线程池的实现.池化技术是一种复用资源,减少开销的技术.线程是操作系统的资源,线程的创建与调度由操作系统负责,线程的创建与调度都要耗费大量的资源,其 ...

  9. java dump分析工具_Java虚拟机详解(八)------虚拟机监控和分析工具(2)——可视化...

    大家好,我是可乐,一个专注原创,乐于分享的程序猿. 本系列教程持续更新,可以微信搜索「 IT可乐 」第一时间阅读.回复<电子书>有我为大家特别筛选的海量免费书籍资料 通过前面的几篇博客,我 ...

最新文章

  1. C#/Net代码精简优化技巧
  2. AI 实验--v_JULY_v
  3. input python2.7_python 中的input
  4. Kafka剖析(一):Kafka背景及架构介绍
  5. 机器学习-特征工程中的样本不均衡处理方法
  6. QML Camera 摄像头拍照(带滑动条设置焦距)
  7. 确诊新冠小米员工的活动轨迹,这就是人间真实吗?
  8. iOS 后台返回json解析出现的null的解决办法
  9. CodeForces - 1537E2 Erase and Extend (Hard Version)(扩展KMP-比较两个前缀无限循环后的字典序大小)
  10. datastage连接mysql库_Datastage 8.5 连接远程Oracle 数据库
  11. python模块之subprocess
  12. gpg: verify signatures failed: 文件打开错误
  13. html5 简单实例源代码
  14. 安装黑苹果系统前请看:macOS Mojave 的硬件兼容性列表
  15. 预约报名小程序 — 预约班车小程序
  16. Vue 使用vue-json-excel 实现导出Excel
  17. 计算机相关英语论文,计算机相关英文论文.doc
  18. 巴巴运动网学习笔记(76-80)
  19. 建立matlab桌面遇到Error Staring Desktop
  20. oracle dba 培训教程 第14章 管理权限

热门文章

  1. Golang HTTP Get Request带参数
  2. 详解使用Linux指令怎么更改文件名称
  3. Redis笔记(狂神说)
  4. 【Cirrodata】通过python头import导入连接行云数据库
  5. java.awt.GridBagConstraints
  6. dotnet core 命令详解
  7. oracle数据库ora00942,ORA-00604 ORA-00942问题处理
  8. tinymce 去掉 ⚡️Upgrade 按钮
  9. delphi assignfile用法
  10. 【文献学习】Multipath Rayleigh and Rician Fading Channel Simulation Using MATLAB