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

Java---抽象类讲解

文章目录

    • 1. 抽象类概述
    • 2. 抽象类特点
    • 3. 抽象类的成员特点
    • 4. 抽象类猫狗应用


1. 抽象类概述

 在Java中,一个没有方法体的方法应该定义为抽象方法;而类中如果有抽象方法,该类必须定义为抽象类。

在这里插入图片描述

在这里插入图片描述

2. 抽象类特点

 1. 抽象类和抽象方法必须使用abstract关键字修饰。

  • public abstract class 类名{};
  • public abstract void eat();

 2. 抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类。

 3. 抽象类不能实例化。抽象类如何实例化呢?参照多态的方式,通过子类对象实例化,这叫抽象类多态。

 4. 抽象类的子类要么重写抽象类中的所有抽象方法,要么是抽象类。

public abstract class Animal {public abstract void eat();public void sleep(){System.out.println("在睡觉");}
}public class Cat extends Animal{@Overridepublic void eat() {System.out.println("猫吃鱼");}
}public class Demo {public static void main(String[] args) {Animal a=new Cat();//编译看左边,执行看右边a.eat(); //猫吃鱼a.sleep();//在睡觉}
}

3. 抽象类的成员特点

 1. 成员变量:可以是常量,也可以是变量。

 2. 构造方法:有构造方法,但是不能实例化。它用于子类访问父类数据的初始化。

 3. 成员方法:可以有抽象方法,限定子类必须完成某些动作。也可以有非抽象方法,用于继承以提高代码复用性。

4. 抽象类猫狗应用

public abstract class Animal {private int age;private String name;public Animal(){}public Animal(String name,int age) {this.name = name;this.age = age;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public abstract void eat();
}public class Cat extends Animal{public Cat(){}public Cat(String name,int age){super(name,age);}@Overridepublic void eat() {System.out.println("猫吃鱼");}
}public class Demo {public static void main(String[] args) {//这就是向上转型Animal a=new Cat("加菲猫",5);System.out.println(a.getName()+" "+a.getAge()); // 输出:加菲猫 5}
}
http://www.lryc.cn/news/248492.html

相关文章:

  • CNAS认可是什么?CNAS软件测试报告如何获取?
  • Tomcat 修改版本号
  • Python算法——霍夫曼编码树
  • hql面试题之上海某资深数仓开发工程师面试题-求不连续月份的月平均值
  • VT驱动开发
  • 火柴人版王者-Java
  • docker 中的–mount 和-v 参数有啥区别
  • 设计规则:模块化的力量
  • 数据结构与算法之递归: LeetCode 78. 子集 (Typescript版)
  • C# 使用 Fody 监控方法执行时间
  • J2EE征程——第一个纯servletCURD
  • BatchOutput PDF for Mac(PDF 批量处理软件)
  • 记一次oracle错误处理
  • hugging face下载dataset时候出现You must be authenticated to access it.问题解决
  • 数据结构---树
  • tomcat调优配置
  • 基于深度学习的点云三维目标检测方法综述
  • Linux命令中的符号
  • BTCPay Server:免费、安全、开源的比特币支付处理器 | 开源日报 No.90
  • 【数据挖掘】国科大刘莹老师数据挖掘课程作业 —— 第三次作业
  • Windows挂载NFS
  • 数据结构第五课 -----二叉树的代码实现
  • 优橙内推北京专场——5G网络优化(中高级)工程师
  • Mysql DDL语句建表及空字符串查询出0问题
  • 深入ArkTS:应用状态管理与LocalStorage装饰器详解【鸿蒙专栏-11】
  • 管理Android12系统的WLAN热点
  • 从0开始学习JavaScript--JavaScript 中 `let` 和 `const` 的区别及最佳实践
  • 【上海大学数字逻辑实验报告】二、组合电路(一)
  • lodash中foreach踩坑
  • Unity C++交互