zoukankan      html  css  js  c++  java
  • 抽象类的构造函数

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

      package com.learn;
      
      public abstract class AbstractPerson {
          
          public static void main(String[] args) {
              new AbstractPerson();
          }
      }
      
      //Error: java: com.learn.AbstractPerson是抽象的; 无法实例化执行
      
    2. 抽象类构造函数的修饰符为public

      //抽象类
      package com.learn;
      
      public abstract class AbstractPerson {
      
          public AbstractPerson(){
              System.out.println("AbstractPerson构造函数");
          }
      }
      
      //抽象类的继承类
      package com.learn;
      
      public class Person extends AbstractPerson{
      
          public Person(){
              System.out.println("Person构造函数");
          }
      
          public static void main(String[] args) {
              new Person();
          }
      }
      
      //运行结果
      AbstractPerson构造函数
      Person构造函数
      

      这说明抽象类可以有构造函数,只是不能被实例化。

    3. 抽象类构造函数的修饰符为protected

      //抽象类
      package com.learn;
      
      public abstract class AbstractPerson {
      
          //修改为protected
          protected AbstractPerson(){
              System.out.println("AbstractPerson构造函数");
          }
      }
      //运行结果
      AbstractPerson构造函数
      Person构造函数
      

      结果和使用public时相同,说明这两种修饰符并没有区别。

    4. 思考
      为什么jdk中都使用的是protected,而不使用public?
      1) protected表示只能继承的类可以使用,public表示所有类都可以使用。
      2) 抽象类的构造函数只能被继承类调用,这和protected的含义相同,因此用protected来修饰,但从编译和运行的角度并没有差别。

  • 相关阅读:
    redis基本操作 —— hash
    redis基本操作 —— string
    redis —— linux下源码安装
    zookeeper c api 安装 & 连接 zookeeper
    wpa_supplicant移植(2.9版本)
    hostapd移植(2.6版本为例)
    hostapd移植(2.7版本)
    使用MKdocs搭建个人主页并关联到GithubPages上
    yolov5的yaml文件解析
    RANSAC——(RANdom SAmple Consensus(随机抽样一致))
  • 原文地址:https://www.cnblogs.com/mlr-wjy/p/12427803.html
Copyright © 2011-2022 走看看