zoukankan      html  css  js  c++  java
  • java基础09- 抽象类

    抽象类

    abstract修饰可以用来修饰方法也可以修饰类,如果修饰方法,该方法就是抽象方法;如果修饰类,该类就是抽象类。

    抽象类中可以没有抽象方法,但是抽象方法的类一定要声明为抽象类。

    抽象类,不能用new关键字来创建对象,它是用来让子类继承的。

    抽象方法,只有方法的声明,没有方法的实现,它是来让子类实现的。

    子类继承抽象类,就必须要实现抽象类没有实现的抽象方法,否则该类也要声明为抽象类。

    例如下面例子

    package com.mjh.oop.demo06;
    /**
     *  abstract 抽象类 extends :单继承   接口可以实现多继承
     *  抽象方法必须在抽象类里,但抽象类里面可以普通方法
     */
    public abstract class Abstract  {
        //有人帮我们实现
        // abstract 抽象方法 只有方法名,没有方法体
    
        public abstract void aaa();
        public void ss(){};
    }
    
    
    package com.mjh.oop.demo06;
    
    /**
     * 一般的类要实现抽象方法,而且要重写抽象类中的抽象方法,否则这个一般类就要变为抽象类
     *子类可以不用重写抽象类里的一般方法
     */
    public class Student  extends Abstract {
        @Override
        public void aaa() {
        }
        
        
        public static void main(String[] args) {
          //  new Abstract();//不能用new关键字创建对象,它由子类实现
            Student s=new Student();
            s.aaa();
            s.ss();
        }
    }
    

    接口

    • 关键字 interface

    • 利用接口可以间接实现多继承 implements

    • 接口中的所有定义的方法其实都是抽象的 public abstract

    • 接口中定义的变量一定是常量(不常用)

      比如我们定义了Person接口和Teacher接口

      在一般类里要实现接口就要实现接口中的所有方法

      package com.mjh.oop.demo06;
      
      public interface Person {
          //常量 public static final
          int AGE=66;
          /**
           * 接口的所有定义其实都是抽象的 public abstract
           */
          void add();
          void delete(String name);
          void update(String name);
          void query(String name);
      
      }
      
      package com.mjh.oop.demo06;
      
      public interface Teacher {
          void  teach();
      }
      
    package com.mjh.oop.demo06;
    
    /**
     * 抽象类
     * 类  可以实现接口,implements接口
     * 实现了接口的类,就需要重写接口中的方法
     * 利用接口来间接实现多继承
     */
    public class PersonImpl implements Person,Teacher{
        @Override
        public void add() {
    
        }
    
        @Override
        public void delete(String name) {
    
        }
    
        @Override
        public void update(String name) {
    
        }
    
        @Override
        public void query(String name) {
    
        }
    
        @Override
        public void teach() {
    
        }
    }
    
  • 相关阅读:
    PHP-redis中文文档
    thinkphp5操作redis系列教程】列表类型之lRange,lGetRange
    微信小程序利用canvas生成海报分享图片
    layui 富文本 图片上传 后端PHP接口
    Redis 学习笔记(十二)Redis 复制功能详解 ----- (error) READONLY You can't write against a read only slave
    php 从2维数组组合为四维数组分析(项目中前台侧边栏导航三级分类显示)
    MySQL中的外键是什么、有什么作用
    微信小程序之自定义模态弹窗(带动画)实例
    【JZOJ4805】【NOIP2016提高A组模拟9.28】跟踪
    【JZOJ4804】【NOIP2016提高A组模拟9.28】成绩调研
  • 原文地址:https://www.cnblogs.com/mjjh/p/13295658.html
Copyright © 2011-2022 走看看