• 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() {
    
        }
    }
    
  • 相关阅读:
    LiveBinding应用 dataBind 数据绑定
    判断当前运行的平台
    客户端如何连接 DataSnap Server 调用服务的方法
    创建DataSnap Server
    FireDACQuery FDQuery New
    BDE 退出历史 迁移至FireDAC
    窗口叉叉变灰
    c++builder XE6 Remote Debuger 远程调试
    IP Editor IP控件
    C++访问mysql数据库
  • 原文地址:https://www.cnblogs.com/mjjh/p/13295658.html
Copyright © 2020-2023  润新知