`
wanjianfei
  • 浏览: 319254 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

构造函数 的protected

 
阅读更多
如果构造函数是私有的,那么该类无法被继承(因为子类构造时要调用超类的构造函数,而private使得子类无法调用),无法从外界获得一个对象.但是可以在类的内部产生一个实例的,例如singleton就是使用private的构造函数,然后在内部维护一个实例,而提供一个static的getInstance方法来获取这个实例
如果构造函数是protected,那么该类可以继承,可以在被包内其他类中产生实例,但是无法在包外或者子类以外的地方产生实例.
public就不说了.

---------------------------------------------------------------

当然有区别!
构造符的访问修饰符可以是private,public,protected及friendly(默认)的
就是这些访问修饰符的区别!
看看下面的程序你就明白了:
//文件名为ProtectedDemo
packagepack;
classBase{
protectedBase(){
System.out.println("haha");
}
}
publicclassProtectedDemoextendsBase{
publicProtectedDemo(){
super();//调用父类Base的构造函数,可以调用因为类的访问修饰符为protected
}
publicstaticvoidmain(Stringargs[]){
ProtectedDemoobj=newProtectedDemo();
BaseobjBase=newBase();
}
}

//文件名为ProtectedDemo1
importpack.*;
publicclassProtectedDemo1{
publicstaticvoidmain(Stringargs[]){
BaseobjBase=newBase();//不能调用因为访问修饰符为protected
}
}
---------------------------------------------------------------

作用域当前类同一package子孙类其他package

public√√√√

protected√√√×

friendly√√××

private√×××

不写时默认为friendly
子孙类可以在同一包,也可以不一个包,此时以最大权限为准。
分享到:
评论

相关推荐

    析构或构造函数声明为保护或私有成员

    析构或构造函数声明为保护或私有成员 标题“析构或构造函数声明为保护或私有成员”所对应的知识点主要是关于C++语言中构造函数和析构函数的访问控制。 在C++语言中,构造函数和析构函数可以被声明为私有或保护成员...

    一起学C#:构造函数和析构函数.rar

    当然,也可以根据需求定义`private`、`internal`或`protected`的构造函数。 3. **无返回值**:构造函数不同于普通方法,它不能有任何返回值,因此在定义时不应包含`return`语句。 4. **自动调用**:当使用`new`...

    c++ 类的定义 和构造函数

    1. **默认构造函数**:无参数的构造函数称为默认构造函数,如果没有显式定义,编译器会自动提供一个默认构造函数。 ```cpp class Person { public: Person() : age(0), name("") {} // 默认构造函数 private: ...

    C++构造函数析构函数

    **构造函数**是C++中一个特殊的成员函数,它的主要任务是在创建对象时初始化对象的状态。构造函数的名称必须与类名相同,且没有返回类型,即使是void类型也不能声明。在给定的例子中,`jx(int a, int b)`就是矩形类`...

    PHP面构造函数,析构函数

    构造函数的主要作用是初始化对象的属性和其他设置。 #### 1.1 基本语法 构造函数的名称必须为`__construct`,并且可以包含参数。其基本语法如下: ```php class ClassName { public function __construct($param1,...

    小组学习:使用构造函数

    3. 带有访问修饰符的构造函数:构造函数可以具有public、private、protected等访问修饰符,控制其在类的内部还是外部可被调用。 二、构造函数的链式调用 当一个类继承自另一个类时,子类在创建实例时不仅要初始化...

    14_构造函数 视频

    8. **构造函数与访问修饰符**:构造函数的访问修饰符可以是`public`、`private`、`protected`或默认(包访问)。选择合适的访问权限可以控制对象的创建范围。 通过这个“14_构造函数”视频教程,观众应该能够理解并...

    论C++构造函数中的不合理设计

    - 构造函数可以被声明为public、private或protected。 - **问题分析**:将构造函数声明为private可以防止外部创建对象,但在某些情况下,这可能会限制类的灵活性,尤其是当需要外部控制对象创建时。 - **解决方案...

    accp6.0-二期:构造函数教程

    如public、private、protected等,它们决定了构造函数在类的内部还是外部可被调用。比如,public构造函数允许任何代码创建该类的对象,而private构造函数则限制了对象只能在类的内部创建。 在实际开发中,我们还会...

    C++中构造函数的深入分析

    ### C++中构造函数的深入分析 #### 引言 C++作为一种强大的编程语言,不仅支持传统的过程式编程,还支持面向对象编程。通过封装、数据隐藏、继承和多态等特性,C++使得代码更加易于维护且具有高度的可重用性。构造...

    构造函数继承.关于java

    例如,如果父类的构造函数是`protected`,那么只有同一包中的子类或者其他包中的`protected`子类才能访问。 通过以上介绍可以看出,在Java中正确理解和使用构造函数继承是非常重要的,它有助于更好地组织代码结构,...

    构造函数定义为private或者protected的好处

    将构造函数,析构函数声明为私有和保护的,那么对象如何创建?已经不能从外部调用构造函数了,但是对象必须被构造,应该如何解决,麻烦大家帮忙...那么为什么有时候将构造函数或者析构函数声明为protected的或者private

    C++构造函数.pdf

    3. 复制构造函数:复制构造函数是一种特殊的构造函数,它用于基于一个已存在的相同类的对象创建一个新的对象。复制构造函数的参数是对已存在的对象的引用。 4. 析构函数:与构造函数相对应,析构函数是在对象生命...

    张秀文实验六友元函数和构造函数.zip

    在C++编程语言中,友元函数和构造函数是两个重要的概念,它们在类的设计和对象的生命周期管理中起着至关重要的作用。本实验旨在帮助学习者深入理解这两个概念及其应用。 友元函数(Friend Function)是C++中的一种...

    类、构造函数、析构函数.pdf

    缺省构造函数是无参数或参数具有默认值的构造函数,编译器会在未定义构造函数时提供一个公共的默认构造函数。析构函数则在对象生命周期结束时自动调用,用于清理资源。如果未声明析构函数,编译器也会提供一个默认的...

    Java:构造函数与对象

    ### Java:构造函数与对象 #### 第一章:构造函数揭秘——创造者的第一次触碰 在Java编程语言中,构造函数扮演着极其重要的角色。它是一种特殊的成员方法,主要用于对象的初始化过程。构造函数没有返回类型,其...

    C 程序设计课件:第12章 构造函数.ppt

    在C++编程语言中,构造函数是类的一个特殊成员函数,它的主要作用是在创建对象时对对象进行初始化。第12章"构造函数"详细介绍了构造函数及其在类与对象中的应用。 首先,我们来理解类与对象的概念。类是对具有相同...

    Java语言基础入门教程 Java实训教程 4.类构造函数-this-静态属性方法-instanceof运算符共55页.pptx

    - 构造函数可添加的修饰符较少,主要包括无修饰符、`public`、`protected`、`private`。 - **缺省构造函数**: - 如果程序员未显式定义构造函数,编译器将自动生成一个无参数的缺省构造函数。 - 缺省构造函数...

    c++ 类与对象课件,包括对象的初始化,对象的使用,构造函数和析构函数等等

    在这个课件中,我们将深入理解类与对象的定义、使用,以及相关的构造函数、析构函数、访问权限、成员函数、静态成员、友元等关键知识点。 首先,类(Class)是C++中定义的一种数据结构,它包含了数据成员(Data ...

    C++构造函数和析构函数的调用顺序1

    在C++编程中,构造函数和析构函数是类的重要组成部分,它们负责对象的初始化和清理工作。本文将深入探讨这两个函数的调用顺序,并通过一个具体的例子来演示这一过程。 1. **构造函数的调用顺序**: 当创建一个对象...

Global site tag (gtag.js) - Google Analytics