• Java学习笔记------抽象类和抽象方法


    抽象方法

    • 抽象方法:将共性的行为(方法)抽取到父类之后,由于每一个子类执行的内容是不一样的,所以,在父类中不能确定具体的方法体,该方法就可以定义为抽象方法
    • 抽象类:如果一个类中存在抽象方法,那么该类就必须声明为抽象类

     抽象类和抽象方法的定义格式

    • 抽象方法的定义格式:   public abstract 返回值类型  方法名(参数列表);
    • 抽象类的定义格式:public abstract class 类名{}

     抽象类和抽象方法的注意事项

    • 抽象类不能创建对象
    • 抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类
    • 可以有构造方法
    • 抽象类的子类要么重写抽象类中的所有抽象方法,要么是抽象类

     抽象类的构造方法的作用:当创建子类对象时,给属性进行赋值

    抽象类的作用:抽取共性时,无法确定方法体,就把方法定义为抽象的。强制让子类按照某种格式重写,抽象方法所在的类必须是抽象类

    1. package com.itheimaabstract;
    2. public abstract class Animal {
    3. private String name;
    4. private int age;
    5. public Animal() {
    6. }
    7. public Animal(String name, int age) {
    8. this.name = name;
    9. this.age = age;
    10. }
    11. public String getName() {
    12. return name;
    13. }
    14. public void setName(String name) {
    15. this.name = name;
    16. }
    17. public int getAge() {
    18. return age;
    19. }
    20. public void setAge(int age) {
    21. this.age = age;
    22. }
    23. public void drink(){
    24. System.out.println("喝水");
    25. }
    26. public abstract void eat();
    27. }
    1. package com.itheimaabstract;
    2. public class Frog extends Animal {
    3. public Frog() {
    4. }
    5. public Frog(String name, int age) {
    6. super(name, age);
    7. }
    8. @Override
    9. public void eat() {
    10. System.out.println("青蛙吃虫子");
    11. }
    12. }
    1. package com.itheimaabstract;
    2. public class Dog extends Animal {
    3. public Dog() {
    4. }
    5. public Dog(String name, int age) {
    6. super(name, age);
    7. }
    8. @Override
    9. public void eat() {
    10. System.out.println("修狗吃骨头");
    11. }
    12. }
    1. package com.itheimaabstract;
    2. public class Sheep extends Animal {
    3. public Sheep() {
    4. }
    5. public Sheep(String name, int age) {
    6. super(name, age);
    7. }
    8. @Override
    9. public void eat() {
    10. System.out.println("羊吃草");
    11. }
    12. }
    1. package com.itheimaabstract;
    2. public class Test {
    3. public static void main(String[] args) {
    4. Frog f=new Frog("小绿",3);
    5. System.out.println(f.getName() +","+f.getAge() );
    6. f.drink() ;
    7. f.eat() ;
    8. Dog d=new Dog("小黄",3);
    9. System.out.println(d.getName() +","+d.getAge());
    10. d.drink() ;
    11. d.eat() ;
    12. Sheep s=new Sheep("小黑",2);
    13. System.out.println(s.getName() +","+s.getAge());
    14. s.drink() ;
    15. s.eat() ;
    16. }
    17. }

    运行结果:

  • 相关阅读:
    SpringCloud(二) 用Eureka做服务注册中心认证
    map格式和string格式转化为json格式
    Python 用户输入和字符串格式化指南
    计算机毕业设计Java家校沟通程序(源码+系统+mysql数据库+lw文档)
    【SA8295P 源码分析 (一)】14 - Passthrough配置文件 /mnt/vm/images/linux-la.config 内容分析
    八大排序(二)快速排序
    python爬虫request和BeautifulSoup使用
    C#中的delegate和event,及他们的区别
    C&C++指针,字符串,数组
    Redis缓存过期和和内存淘汰策略
  • 原文地址:https://blog.csdn.net/weixin_73048230/article/details/132817604