【JAVA学习之路 | 提高篇】抽象类与抽象方法(abstract)

简介: 【JAVA学习之路 | 提高篇】抽象类与抽象方法(abstract)

1.由来

  • 随着继承层次中一个个新子类的定义,类变得越来越具体.,而父类更一般更通用.类的设计应保证父类和子类能够共享特征.有时将类设计的非常抽象,以至于他没有具体的实例,这种类称为抽象类.
  • 我们可以声明一些图形类,如三角形,正方形,这些类有共同的特征,如求面积,求方法.这些共同的方法应抽取到父类中.但这些方法在父类中又无法给出具体的实现,而应该交给子类去实现具体的功能.父类在声明这些方法时,就只有方法签名,没有方法体,我们把没有方法体的方法称为抽象方法.(有抽象方法的类一定是抽象类)

2.格式

(1). 抽象类与抽象方法

abstract class Animal{

    public abstract void eat();

    //没有方法体

}

}

(2). 子类对抽象方法的实现.

class Dog extends Animal{

    public void eat{

        //重写或实现父类的抽象方法

        System.out.println("Dog is eating");

}

}

class Cat extends Animal {

    public void eat() {

        System.out.println("Cat is eating");

}

3.abstract修饰类

  1. abstract修饰的类被称为抽象类
  2. 抽象类不能实例化,即不能new创造对象.
  3. 抽象类中是包含构造器的,因为子类对象实例化时,会直接或间接的调用父类的构造器,从而父类的属性和方法被加载到内存中,供子类调用.
  4. 抽象类可以没有抽象方法.但有抽象方法的类,一定是抽象类.

4.abstract修饰方法

  1. abstract修饰的方法即为抽象方法.
  2. 抽象方法只有方法声明,没有方法体.
  3. 抽象方法的功能是确定的(如eat方法),通过方法的声明确定.只是不知道如何实现(无方法体).
  4. 子类必须重写父类的所有抽象方法之后,才能够实例化,否则仍是抽象类.

5.abstract不能修饰的结构

  • 属性
  • 构造器
  • 代码块

6.abstract不能与哪些关键字共用

(1). private方法 : 私有方法不能被重写.


(2). static方法 : 抽象类内抽象方法的功能由子类重写的方法实现,自身没有方法体,避免静态方法使用类进行调用.


(3). final方法 : final修饰的方法不能被重写.


(4). final修饰的类 : final修饰的类不能被继承.

相关文章
|
3天前
|
Java 调度
Java并发基础-线程简介(状态、常用方法)
Java并发基础-线程简介(状态、常用方法)
8 0
|
13小时前
|
Arthas 存储 监控
性能监控之常见 Java Heap Dump 方法
【6月更文挑战8天】性能监控之常见 Java Heap Dump 方法
19 6
|
1天前
|
存储 安全 Java
深入理解Java中的ThreadLocal机制:原理、方法与使用场景解析
深入理解Java中的ThreadLocal机制:原理、方法与使用场景解析
10 2
|
3天前
|
Java
JAVA高级部分学习小结(2023.11.4)
JAVA高级部分学习小结(2023.11.4)
|
3天前
|
Java
Java读取txt文件和写入txt文件-多种方法-java读写文件-java读写
Java读取txt文件和写入txt文件-多种方法-java读写文件-java读写
13 0
|
3天前
|
Java
Java基础7-一文搞懂抽象类和接口,从基础到面试题,揭秘其本质区别(二)
Java基础7-一文搞懂抽象类和接口,从基础到面试题,揭秘其本质区别(二)
9 0
|
3天前
|
设计模式 Java 内存技术
Java基础7-一文搞懂抽象类和接口,从基础到面试题,揭秘其本质区别(一)
Java基础7-一文搞懂抽象类和接口,从基础到面试题,揭秘其本质区别(一)
12 0
|
3天前
|
Java
guava Splitter 与java 内置的string的split 方法的区别
guava Splitter 与java 内置的string的split 方法的区别
5 0
|
3天前
|
设计模式 Java 测试技术
Java8实战-默认方法
Java8实战-默认方法
5 2
|
4天前
|
存储 Java 测试技术
滚雪球学Java(58):玩转Java中的ArrayList:常用操作技巧和方法总结
【6月更文挑战第12天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
5 0
滚雪球学Java(58):玩转Java中的ArrayList:常用操作技巧和方法总结