方法的访问修饰符
Ⅰ C#中四种访问修饰符是哪些
c#的四种访问修饰符是:
public、protected、private和internal。
其实,还有一个组合访问修饰符,那就是:
protected internal。
下面是一个例子:
using System;
class Program
{
static void Main(string[] args)
{
f1();
f2();
f3();
f4();
f5();
Console.ReadKey();
}
public static void f1()
{
Console.WriteLine("public方法");
}
protected static void f2()
{
Console.WriteLine("protected方法");
}
private static void f3()
{
Console.WriteLine("private方法");
}
internal static void f4()
{
Console.WriteLine("internal方法");
}
protected internal static void f5()
{
Console.WriteLine("protected internal方法");
}
}
这是运行结果截图:
Ⅱ java 三种访问修饰符各如何使用
public 在任何地方都可访问 protected同包之间可以访问非同包子类可以访问 默认友好类:同包可以访问 private本类可以访问
下面是三大修饰符,你也顺便看看吧
如果一个类中如果有抽象方法,那么这个类必须是抽象类 , 抽象类中未必有抽象方法
抽象类抽象方法 抽象类中可以有抽象方法,也可以有实例方法 抽象方法只能声明,不能实现后面用 ; 结尾
抽象类的子类如果不希望成为抽象类,那么它就必须去实现父类中所有的抽象方法
抽象类允许定义构造方法
抽象类 只能声明引用 , 不能创建对象
抽象方法不能与static 一起使用 , abstract 类中的方法必须在子类中重写 ,并实现多态
Static 只能继承并重写父类中方法 , 但是不能实现多态 .
抽象方法不能与final 一起使用 , final 修饰的方法不能够在子类中覆盖,而抽象方法是必须要求要在子类中覆盖的.
抽象类不能与private一起使用,抽象类中的方法都必须要在子类中重写后实现,而private修饰的方法不能继承,更谈不上重写覆盖
Static
静态的 . 可修饰 : 方法, 成员变量(属性)
静态属性全类共有,由类名调用
静态方法中只能访问非静态的成员(属性+方法);
静态方法可以被覆盖,但是没有多态
静态初始化代码块
在类加载的时候,执行一次
类加载: 1 . 需要的话,先加载父类(可能父类已经加载过 ,这时候就可以不用加载父类了)
2 . 为静态属性分配空间并初始化
3 . 按顺序执行静态初始化代码块
Final
可修饰: 变量(局部变量和成员变量) : 赋值后不能再发生改变
方法 : final 修饰后的方法不能被覆盖 ,但可以继承
类 : final类不能被子类继承
Final修饰属性时候 , 属性此时没有默认值. 此时可以初始化属性值,或者构造方法中赋值
一般情况下常量为 public static , 常量名全部大写
这是我学习时候的笔记,希望对你有所帮助
Ⅲ JAVA中main的四要素
方法的访问修饰符,方法返回类型,方法名(参数列表),方法体。例如:
public void main(String[] args)
{//.....}
public 就是访问修饰符,还有protected ,private以及默认的。一共四种。
void就是返回类型了,这里是空,返回类型有很多种,例如String,int,float。。。
main就是方法名,方法名可以是任何java允许的标示符。
后面括号的就是参数列表,定义一个方法时参数列表可以自己定义,格式是:参数类型 参数
方法体就是最后大括号中的代码块,有自己或系统定义一个具体的实现。
Ⅳ java 的访问修饰符是什么
Java中的访问修饰符
Java面向对象的基本思想之一是封装细节并且公开接口。Java语言采用访问控制修饰符来控制类及类的方法和变量的访问权限,从而向使用者暴露接口,但隐藏实现细节。访问控制分为四种级别:
(1)public: 用public修饰的类、类属变量及方法,包内及包外的任何类(包括子类和普通类)均可以访问;
(2)protected: 用protected修饰的类、类属变量及方法,包内的任何类及包外那些继承了该类的子类才能访问(此处稍后解释),protected重点突出继承;
(3)default: 如果一个类、类属变量及方法没有用任何修饰符(即没有用public、protected及private中任何一种修饰),则其访问权限为default(默认访问权限)。默
认访问权限的类、类属变量及方法,包内的任何类(包括继承了此类的子类)都可以访问它,而对于包外的任何类都不能访问它(包括包外继承了此类的子类)。default重点突出包;
(4)private: 用private修饰的类、类属变量及方法,只有本类可以访问,而包内包外的任何类均不能访问它。
网上一些资料及一些书上用表格对java访问修饰符做了清楚的总结,如下表所示:
重要总结:通过上面的分析,我们可以看到:
1.public、private和protected对我们来说没有任何异议。
2. 顶层类只能用public访问修饰符和default(默认)访问修饰符修饰,其中用默认修饰符修饰的类(及没有任何修饰符的类,如class B{})不能被其他包中的类继承,这也说明了default(默认)访问修饰符突出的是包权限
3. protected:本人做了一次实验,发现在不同包的子类中,new一个父类对象,并用该父类对象去访问父类中的用protected修饰的类属变量和方法时不能访问,而new一个子类对象时,子类对象可以访问(说明protected修饰的类可以被其他包中的类继承)。也可以在子类重写父类的方法中使用super关键字调用。这岂不是和上面表格中的总结(红色对勾)冲突了?本人也是百思不得其解。最后在网上找到了一个相对比较认可的解释,如下:
protected修饰符的修饰的成员变量和方法也称为受保护的成员变量和方法, 受保护的成员变量和方法可以在本类或同一个包中的其它类(包括子类)中通过类的实例进行访问,也可以被同一个包中的类或不同包中的类继承,但是不能在不同包中的其它类(包括子类)中通过类的实例进行访问。
4. 如果一个类使用public修饰,那该类的类名必须与他所在的源文件名相同。一个.java源文件中有且只有一个public类,顶层类只能用public和默认修饰符(即无修饰符)修饰;
5.final修饰的类不能被继承,没有子类。
6.abstract修饰的类不能被实例化,必须被子类继承。类只要有一个抽象方法就必定是抽象类,但抽象类不一定要有抽象方法。
最终总结,就一句话:protected修饰符所修饰的类(这句话中指父类)属成员变量和方法,只可以被子类访问,而不管子类是不是和父类位于同一个包中。default修饰符所修饰的类属成员变量和方法,只可被同一个包中的其他类访问,而不管其他类是不是该类的子类。protected属于子类限制修饰符,而default属于包限制修饰符。