码迷,mamicode.com
首页 > 编程语言 > 详细

C/C++ C# JAVA比教学------访问控制机制

时间:2016-05-07 10:12:17      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:

1、java
java中表示权限的关键字分别为public,protected,private。没有friendly这个,什么都不写的话也是一种不同的权限表示。

class Mall
{
    public String mallName;
}


class SuperMarket extends Mall
{
    public void Show(){
        System.out.println("THIS IS A SUPERMAKET:");
        System.out.println(mallName);
    }
}

public class helloworld
{

    public static void main(String args[])
    {

        SuperMarket superMarket = new SuperMarket();
        superMarket.mallName = "Gao";
        superMarket.Show();

    }
}

简单来讲:
public的成员可以被本类,本包,子类,子类,外部包访问
protected的成员可以被本类,本包,子类访问,但是不能被外部包访问
default的成员可以被本类,本包访问
private只可以被本类访问

java的文件可以由很多个顶级类,作用位置只可能有两种,要么是所有位置(public),要么是本包中(default)。但是,一个文件只能有一个同名的有public修饰的外部类。其他的外部类由default修饰。

外部类内部可以包含内部类,内部类可以采用四种修饰方式,内部类的相关说明在java专题下。

3、C#
C#中的访问控制机制的修饰符有public,private ,protected,internal
其中,可以修饰类的只有protected和internal。无论是类还是类的成员,如果不写修饰符默认为internal
技术分享
在上图中可以看到,private只能在类的内部访问,protected只能在本类和子类中访问,internal可以被本程序集内访问,public可以在任何地方访问。protected internal是protected or internal的意思。

对于类来说,public表示任何地方都可以访问到,internal表示只有在相同程序集内才能访问到。这里所谓的相同程序集是指不同的project下的程序,而非是不同的命名空间。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.InteropServices;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {


            Console.WriteLine("hello,world");


            OtherNameSpace.A a  = new OtherNameSpace.A();//在同一个程序集不同命名空间internal也可以访问
            ConsoleApplication2.B b = new ConsoleApplication2.B();//B所在的程序是由另一个项目产生的,class B必须是public才能访问,也就是说需要在VS中新建程序后添加引用。

            Console.ReadLine();


        }
    }
}
namespace OtherNameSpace
{
    internal class A
    {
        public A()
        {
            Console.WriteLine("here is A");
        }
    }
}

3、C++
C++的访问控制符有三个,private,protected,public

private只能由本类内进行访问
protected只能由本类和子类进行访问
public可以在任何地方进行访问

在继承的时候,private属性不能被继承
如果使用public继承,那么,成员的属性不发生改变
如果使用protected继承,那么,父类的public和protected到子类中都变成了protected
如果使用private继承,那么,父类的public和protected到子类中都变成了private

相比之下,java和c#都只存在public的继承。

除此之外,c++中还有friend关键字,可以用于定义友元函数和友元类。友元函数是指不包含在任何类中可以访问类中的任何成员。友元类破坏了类的封装性和隐藏性。

C/C++ C# JAVA比教学------访问控制机制

标签:

原文地址:http://blog.csdn.net/define_us/article/details/51334079

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!