`
maiguang
  • 浏览: 262433 次
  • 性别: Icon_minigender_1
  • 来自: 焦作
社区版块
存档分类
最新评论

java和c#中public ,private ,protected 及default的区别

    博客分类:
  • JAVA
阅读更多

java作用域public ,private ,protected 的区别    
在说明这四个关键字之前,我想就class之间的关系做一个简单的定义,对于继承自己的class,base class可以认为他们都是自己的子女,而对于和自己一个目录下的classes,认为都是自己的朋友。

1、publicpublic表明该数据成员、成员函数是对所有用户开放的,所有用户都可以直接进行调用

2、privateprivate表示私有,私有的意思就是除了class自己之外,任何人都不可以直接使用,私有财产神圣不可侵犯嘛,即便是子女,朋友,都不可以使用。

3、protected:protected对于子女、朋友来说,就是public的,可以自由使用,没有任何限制,而对于其他的外部class,protected就变成private

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

public        √       √             √           √

protected     √       √             √           ×

friendly      √       √             ×           ×

private       √       ×             ×           ×

不写时默认为friendly

 

 

举例1:

 

using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            aa c = new aa();

            c.bb;//出错,因为bb是私有的

            c.Bb;//正确,Bb是共有的。封装了bb的一个变量。想访问私有变量,那么就要封装它。
        }
    }
    class aa
    {
        private string bb;

        public string Bb1
        {
            get { return bb; }
            set { bb = value; }
        }
      
    }
}

 
举例2:
class A{
public:
int a1;
protected:
int a2;
private:
int a3;
};
A a;
a.a1;//ok
a.a2;//error
a.a3;//error
class B:public A{
public:
void fb(){
a1;//ok
a2;//ok
a3;//error;
}
};
B b;
b.a1,b.a2,b.a3与a.a1,a.a2,a.a3一样,因为是class B:public A,相当于把A放到了B的public部分。

class B:private A{};

b.a1,b.a2,b.a3都error,因为相当于把A全放到了B的private部分,从B来看这三个变量,都是private的。

 

 

 

 

 

分享到:
评论

相关推荐

    一周学会C# java程序员转.NET必看

    C#有`public`, `private`, `protected`, `internal`和`protected internal`等访问修饰符,控制类成员的可见性。与Java类似,`public`成员可在任何地方访问,`private`仅在类内部可见,`protected`允许子类访问,`...

    浅谈Java和C#在面向对象上语法的区别

    Java的访问级别从低到高依次是private、default、protected和public,而C#有private、internal、protected、protected internal和public。值得注意的是,C#的internal访问级别与Java的default类似,但作用范围基于...

    面试题集锦(C#,java)

    - Java的访问修饰符主要是`public`、`default`(包访问)、`protected`和`private`。 这些对比点只是C#和Java之间众多差异中的一部分,学习这两门语言时,理解这些区别对于开发者来说至关重要,尤其是在准备面试或...

    Demo_Java_to_CSharp_Converter

    - **访问修饰符**:Java的`public`, `private`, `protected`和`default`对应C#'s `public`, `private`, `protected`和`internal`。 - **异常处理**:Java的`try-catch-finally`块在C#中也有对应的`try-catch-finally...

    C Sharp和Java的区别.doc

    - C#中,如果成员没有明确的访问修饰符,它默认是`private`,而在Java中,成员默认是包访问权限(default),即在同一包内的类可见。 - C#中的`internal`对应Java的包访问权限,即默认情况下,同一包内的类可以...

    (C#)开发漫谈:关于变量的命名和属性

    public允许所有类访问,private限制为仅限于当前类内部访问,protected允许子类访问,internal用于同程序集内的访问,而default(无明确修饰符)的访问级别通常为assembly-level(程序集级别)。 此外,C#还引入了...

    C# 自定义控件的属性和添加事件

    在C#中,可以通过使用`System.ComponentModel`命名空间中的特性来定义属性,如`DefaultValue`(指定默认值)和`Category`(分组属性)。以下是一个添加自定义属性的例子: ```csharp [DefaultValue("默认文本")] ...

    C# 重写WndProc 拦截 发送 系统消息 + windows消息常量值

    C# 中的WndProc 函数是Windows 消息处理函数的入口点,它可以拦截和处理所有的Windows 消息。WndProc 函数的原型定义为:`protected override void WndProc(ref Message m)`,其中 `Message` 结构体包含了消息的所有...

    一周学会C#一周学会C#

    `public`,`private`,`protected`和`internal`用于访问修饰,`virtual`,`override`,`sealed`,`abstract`用于方法和属性的多态性。 7. **泛型**: C#中的泛型允许创建可重用的数据结构和算法,它们可以适应多种...

    C# 自定义控件入门

    在C#编程中,自定义控件是一种常见的需求,它允许开发者根据特定的项目需求创建具有独特功能和外观的UI元素。本文将深入探讨C#自定义控件的创建过程,以及如何通过事件来传递信息。 首先,创建自定义控件需要新建一...

    Object Oriented Programming Using C#(c#面向对象编程基础)

    在C#中,可以通过访问修饰符(如`public`、`private`、`protected`等)来控制类成员的可见性。 ### 五、继承 继承允许一个类(派生类)从另一个类(基类)继承属性和方法。这样可以复用代码,减少重复,并提高程序...

    C# 语言规范word新

    10. **安全性**:C#支持访问控制(如public、private、protected等)、权限修饰符(如unsafe、internal等),以及代码签名和强命名,确保代码的安全性和可靠性。 这个“C#语言规范word新”文档,作为学习和开发C#的...

    C#的关键字大全

    C#的关键字大全 C#语言中,关键字是对编译器具有特殊意义的预定义保留标识符,这些关键字不能在...C#语言中的关键字是编译器识别的特殊标识符,它们具有特殊的意义和用途。在编程时,正确地使用关键字是非常重要的。

    C#面试题附答案绝对别错过

    6. **可访问性级别**:C#中的访问修饰符有public(公开)、protected(受保护)、internal(内部)、protected internal(受保护且内部)、private(私有),分别控制了成员对不同范围的可访问性。 7. **sealed ...

    C#.Net的常见面试试题及答案

    ### C#.Net的常见面试试题及答案解析 #### 1. 关于`new`操作符的理解 在C#中,`new`关键字有着多种用途: 1. **创建对象:** - `new`用于创建一个类的新实例。 - 示例:`MyClass obj = new MyClass();` 2. **...

    CSharp和Java的区别.doc

    - **C#与Java的区别**:在Java中,类和接口之间使用空格分隔,而在C#中使用逗号分隔。 #### 十三、异常处理 - **异常处理的目的**:增强程序的健壮性,确保程序即使遇到意外情况也能继续运行。 - **异常处理的基本...

    c#面试相关问题及答案

    - **封装**:通过访问修饰符(public、private、protected)实现数据的隐藏和保护。 3. **泛型** - 泛型提供了一种方式来创建类型参数化的类、接口和方法,增强了代码的可重用性和类型安全性。 4. **异常处理** ...

    C#实现用户界面控件的拖动

    本教程将详细讲解如何在C#中实现用户界面控件的拖动操作,以实现更加灵活和直观的交互设计。 首先,我们需要了解Windows Forms或WPF(Windows Presentation Foundation)这两个C#中的UI框架。Windows Forms是.NET ...

    JAVA学习之路-基础

    它包括类的设计、对象的创建和销毁、接口、抽象类、访问修饰符(public, private, protected, default),以及设计模式(如单例模式、工厂模式、观察者模式)等。ood(java).ppt可能会详细讲解这些概念和实践方法。 ...

Global site tag (gtag.js) - Google Analytics