ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

JAVA 抽象类

2022-02-18 16:31:24  阅读:120  来源: 互联网

标签:JAVA void public class 抽象类 方法 abstract


抽象类

目录

一、基本介绍

引出:

当父类的某些方法,需要声明,但是又不确定如何实现时,可以将其声明为抽象方法,那么这个类就是抽象类

当父类的一些方法不确定时,可以用abstract关键字来修饰该方法,这个方法就是抽象方法,用abstract来修饰该类就是抽象类。

  • 一般来说,抽象类会被继承,由其子类来实现抽象方法
  1. 用abstract 关键字来修饰一个类时,这个类就叫抽象类
    • 访问修饰符 abstract 类名{}
  2. 用abstract 关键字来修饰一个方法时,这个方法就是抽象方法
    • 访问修饰符 abstract 返回值类型 方法名(参数列表);//没有方法体
  3. 抽象类的价值更多作用是在于设计,是设计者设计好后,让子类继承并实现抽象类()
  4. 抽象类,是考官比较爱问的知识点,在框架和设计模式使用较多

二、注意事项和使用细节

  1. 抽象类是不能被实例化的

  2. 抽象类不一定要包含抽象方法,也就是说可以没有abstract方法

  3. 一旦类包含了abstract方法,则这个类必须是abstract类

  4. abstract只能修饰类和方法,不能修饰属性和其他的。

    package com.hspedu.abstract_;
    
    public class AbstractDetail01 {
        public static void main(String[] args) {
            //1.抽象类,不能被实例化
            //new A();
            // 'A' is abstract; cannot be instantiated
        }
    }
    
    //抽象类不一定要包含抽象方法,也就是说可以没有abstract方法,还可以实现的方法
    abstract class A{
        public void hi(){
            System.out.println("hi");
        }
    }
    
    
    //一旦包含了abstract方法,该类必须是abstract类
    abstract class B{
        public  abstract void hi();
    }
    
    //abstract 只能修饰方法和类,不能修饰其他
    class C{
    //    public abstract int num1;
    }
    
    
  5. 抽象类可以有任意成员[抽象类本质还是类]

    • 比如:非抽象方法,构造器,静态属性等
  6. 抽象类不能有主体,即:不能实现

  7. 如果一个类继承了抽象类则它必须实现抽象类的所有抽象方法,除非它自己也声明为abstract类。

    package com.hspedu.abstract_;
    
    public class AbstractDetail02 {
        public static void main(String[] args) {
    
        }
    }
    
    abstract class E{
        public abstract void hi();
    }
    
    abstract class F extends E{
    
    }
    
    class G extends F{
        @Override
        public void hi() {
            //所谓实现方法,就是有方法体
            System.out.println("hi~~");
        }
    }
    
    //抽象类的本质还是类,可以有类的任何成员
    abstract class D {
        public int n1 = 10;
        public static String name = "大龙";
    
        public void hi() {
            System.out.println("hi");
        }
    
        public abstract void hello();
    
        public static void ok() {
            System.out.println("OK");
        }
    }
    
  8. 抽象方法不能使用private、final和static来修饰,因为这些关键字和重写是相违背的

三、抽象类最佳实际-模板设计模式

需求:

  1. 有多个类,要完成不同任务的job
  2. 要求统计各自完成的时间
  3. 请编程实现

总结:

  • 把公共的部分抽取出来写成一个方法,然后在把不确定的方法抽象化,放在合适的位置
  • 以上的方法放在一个父类中,子类有需要使用时就经常该父类,然后重写抽象方法,这就是模板设计模式的体现

标签:JAVA,void,public,class,抽象类,方法,abstract
来源: https://www.cnblogs.com/DL50/p/15909282.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有