10.定义类时不可能用到的关键字是?
A. final
B. public
C. protected
D. static
正确答案是:C
这题我当时选择D,答错了。
static 使用对象:类、变量、方法、初始化函数(注意:修饰类时只能修饰 内部类 )
final 使用对象:类、变量、方法
public 使用对象:最广,类、接口、变量、方法
protected使用对象:变量、方法 注意:不能修饰类(外部类)
Java 的外部类为什么不能使⽤ private 和 protected 进⾏修饰 对于这个问题,⼀直没有仔细思考,今天整理⼀下: 对于顶级类 ( 外部类 ) 来说,只有两种修饰符: public 和默认 ( default ) 。因为外部类的上⼀单元是包,所以外部类只有两个作⽤域: 同包,任何位置。因此,只需要两种控制权限:包控制权限和公开访问权限,也就对应两种控制修饰符: public 和默认 (default) 。 如果类使⽤了 private 修饰符,说明是个内部类。内部类的上⼀级是外部类,那么对应的有四种访问控制修饰符:本类 (private) ,同包 (default) ,⽗⼦类 (protected) ,任何位置 (public) 。当⼀个内部类使⽤了 private 修饰后,只能在该类的外部类内 部使⽤。 上⾯这些都是平时使⽤司空见惯的,但是为什么是这种情况呢? 可以想⼀下,⼀个 java 项⽬是不可能在⼀个 class ⾥⾯完成的。 mvc 模式中,是把类分为三层,⼀层层调⽤类。如果定义为私有 的和受保护的就⽆法调⽤。换句话说,对于⼀个 java ⽂件,要么就是⾃⼰单独运⾏,要么就是被其他程序作为库调⽤,如果⼀ 个 java ⽂件的类被 private 修饰,那么是不是其他的程序或是类是⽆法使⽤它的,那么他作为⼀个单独的⽂件就没啥⽤了。如果 它作为单个⽂件运⾏,类加载怎么找到它呢,因为它对外不可见。同时,也失去了类的存在意义。因此,类只有 public 和默认 修饰符。

package com.songxinfeng;
public class Test{
public static class method{//内部类
}
protected static class method4{//内部类
}
protected class method5{//内部类
}
static class method7{//内部类
}
}
final class Test2{//不能被继承或修改,如String
}
static class method6{
}
protected class Test3{
}

本文深入探讨Java中的访问修饰符,包括public、protected、private和default的使用范围及限制,特别强调了类、变量、方法的修饰符选择,并解析了为何外部类不能使用private和protected进行修饰。
483

被折叠的 条评论
为什么被折叠?



