精华内容
下载资源
问答
  • private(私有的)无法访问:使用private关键字,就意味着被声明的成员或方法,除了本,其他任何都无法访问。 public(公共的)接口访问权限:使用public关键字,就意味着被声明的成员或方法对所有都是可以...

    定义

    private(私有的)无法访问:使用private关键字,就意味着被声明的成员或方法,除了本类,其他任何类都无法访问。

    public(公共的)接口访问权限:使用public关键字,就意味着被声明的成员或方法对所有类都是可以访问的。

    protected(受保护的)继承访问权限:使用protected关键字,就意味着被声明的成员或方法,在子类以及相同包内的其他类都可以访问的。

    default(默认的)包访问权限:即不写任何关键字,就意味着相同包内的其他类(包括子类)可以访问,包外都不可以访问。
    在这里插入图片描述

    一、为什么不能用private修饰Java外部类?

    因为如果使用private修饰Java外部类,那么这个类不能创建实例,这个类的属性和方法不能被访问,那么创建这个类毫无意义,所以不能使用private修饰Java外部类。

    二、为什么不能用protected修饰Java外部类?

    举个例子,如果类A用protected修饰,与类A不同包的类B想要访问类A的话,类B就必须是继承类A的(或者说类B必须为类A的子类),但是类B继承类A的前提又是类B可以访问到类A,有点绕对吧,仔细想想会发现这里是冲突的,其实这就说明了为什么不能用protected来修饰外部类。再说,protected是用来表示在继承关系中的访问权限的,在同一个包和子类中都可以访问,因为继承就是为了拥有父类的属性和方法,所以protected是用于修饰类的方法和属性的,也就是说,我想要这个类的属性和方法可以被任何子类继承,我就用protected。

    展开全文
  • 今天小编就为大家分享一篇关于Java的外部为什么不能使用private和protected进行修饰的讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
  • 首先,清楚Java外部和内部的同学可以先百度一下。 其次,我们简单了解一下四种权限修饰符: private(私有的)无法访问:使用private关键字,就意味着被声明的成员或方法,除了本,其他任何都无法访问。...

    首先,不清楚Java外部类和内部类的同学可以先百度一下。

    其次,我们简单了解一下四种权限修饰符:

    private(私有的)无法访问:使用private关键字,就意味着被声明的成员或方法,除了本类,其他任何类都无法访问。

    public(公共的)接口访问权限:使用public关键字,就意味着被声明的成员或方法对所有类都是可以访问的。

    protected(受保护的)继承访问权限:使用protected关键字,就意味着被声明的成员或方法,在子类以及相同包内的其他类都可以访问的。

    default(默认的)包访问权限:即不写任何关键字,就意味着相同包内的其他类(包括子类)可以访问,包外都不可以访问。

    修饰符同类中 同一个包中(子类和无关类) 不同包(子类) 不同包(无关类)
    public✔️✔️✔️✔️
    protected✔️✔️✔️
    默认✔️✔️
    private✔️

    一、为什么不能用private修饰Java外部类?

    因为如果使用private修饰Java外部类,那么这个类不能创建实例,这个类的属性和方法不能被访问,那么创建这个类毫无意义,所以不能使用private修饰Java外部类。

    二、为什么不能用protected修饰Java外部类?

    举个例子,如果类A用protected修饰,与类A不同包的类B想要访问类A的话,类B就必须是继承类A的(或者说类B必须为类A的子类),但是类B继承类A的前提又是类B可以访问到类A,有点绕对吧,仔细想想会发现这里是冲突的,其实这就说明了为什么不能用protected来修饰外部类。再说,protected是用来表示在继承关系中的访问权限的,在同一个包和子类中都可以访问,因为继承就是为了拥有父类的属性和方法,所以protected是用于修饰类的方法和属性的,也就是说,我想要这个类的属性和方法可以被任何子类继承,我就用protected。我想要这个类的属性和方法不能被任何子类继承,我就用private(有点强词夺理哈。。。)。同理,我想要这个类被继承,我就用abstract。我不想这个类被继承,我就用final。所以,用protected修饰类有什么意义呢?关键点还是在于第一句话,protected是用来表示在继承关系中的访问权限的!!!

    要么能,要么不能。要么这样,要么那样。只要记住,设计都是为了达到某种目的就OK啦。

    展开全文
  • 沉寂了将近一年后,决定重新理解Java,刚开始就遇到这个以前忽略的问题。简单写一下自己的想法: 首先,Java的存在...若声明为private,该类不能被任何其它调用,则失去了在实际应用中的意义(一个文件的力量...

    沉寂了将近一年后,决定重新理解Java,刚开始就遇到这个以前忽略的问题。简单写一下自己的想法:

    首先,Java中类的存在的意义就是要被其它类调用。

    外部类:

    默认的修饰符(default)可以保证该外部类可被同一包的其它类使用。

    public可以使该类在同一工程的任意位置(本包和其它包)中使用。

    若声明为private,该类不能被任何其它类调用,则失去了在实际应用中的意义(一个文件的力量太有限了)。

    关于protected,我们先来看一个图:

    对于外部类,protected与default的区别就是在继承中子类是否能访问到父类的实例变量。default可以使同包的子类访问,protected可以使不同包的子类访问。

    重点来了!!!protected声明的类在不同包中访问不到!!!

    所以外部类声明为protected或default其实现的访问限制完全相同!

    功能重复,这大概就是外部类不能声明为protected的原因吧。

    展开全文
  • 如果类使用private修饰符,说明是个内部。内部的上一级是外部,那么对应的有四种访问控制修饰符:本(private),同包(default),父子(protected),任何位置(public)。当一个内部类使用private修饰后

    对于顶级类(外部类)来说,只有两种修饰符:public和默认(default)。因为外部类的上一单元是包,所以外部类只有两个作用域:同包,任何位置。因此,只需要两种控制权限:包控制权限和公开访问权限,也就对应两种控制修饰符:public和默认(default)。

    如果类使用了private修饰符,说明是个内部类。内部类的上一级是外部类,那么对应的有四种访问控制修饰符:本类(private),同包(default),父子类(protected),任何位置(public)。当一个内部类使用了private修饰后,只能在该类的外部类内部使用。

    上面这些都是平时使用司空见惯的,但是为什么是这种情况呢?

    可以想一下,一个java项目是不可能在一个class里面完成的。mvc模式中,是把类分为三层,一层层调用类。如果定义为私有的和受保护的就无法调用。换句话说,对于一个java文件,要么就是自己单独运行,要么就是被其他程序作为库调用,如果一个java文件的类被private修饰,那么是不是其他的程序或是类是无法使用它的,那么他作为一个单独的文件就没啥用了。如果它作为单个文件运行,类加载怎么找到它呢,因为它对外不可见。同时,也失去了类的存在意义。因此,类只有public和默认修饰符。

    展开全文
  • 对于这个问题,一直没有仔细思考,今天整理一下: 对于顶级(外部)来说,只有两种修饰符:public和默认(default)。...如果类使用private修饰符,说明是个内部。内部的上一级是外部,那
  • java中的局部变量不能用private修饰

    千次阅读 2019-09-05 16:32:19
    java中的局部变量不能用private修饰
  • java中不同访问private方法

    千次阅读 2018-06-21 18:01:01
    public class PrivateMethod { private String privateMethod(){ return "这是PrivateMethod的私有方法"; } }访问上诉的方法如下:package com.test.game;import java.lang.refle...
  • Java能不能继承父类的protected和private方法子父类定义 Method的privateprotectedprivate方法探讨 问题解决 总结Java能不能继承父类的protected和private方法?子父类定义 先写一个父类,定义方法和变量 public ...
  • java中用private修饰

    千次阅读 2019-08-08 20:54:56
    private 不能用来修饰外部,只能修饰内部(也就是中嵌套的,修饰外部直接报错) 一般不用private修饰
  • Java中如果将一个方法声明为私有的,即通过private关键字...我们人为地将构造方法声明为private,这样其他的不能直接调用该生成新的对象,也就避免了同一个被反复创建的情况,这种情况,该只有一个对象实例。
  • 通过Person中的set()方法和get()方法设置并获取,在这里我们要注意的是set方法一般无返回值但是有参数(参数来自调用ser方法的),get方法有返回值但无参数,主要用于向主类中传递private修饰的数据,而我们则...
  • 关于内部是如何获取外部private属性上一段代码:public class OuterClass { private static String language = "en"; private String region = "US"; private String li; private void kk() { System.out....
  • java private修饰的和变量

    千次阅读 2017-07-25 11:26:12
    private修饰的变量和方法,只能在自己对象内部使用,其他对象即使是new你这个对象也是获取到被private修饰的变量以及方法的。public class privateClass { private static a = 1; private static void setA(in
  • JAVA中私有属性private能被子继承吗?  分享| 2012-05-11 21:40heyiyong | 浏览 7757 次  java 2012-05-11 21:47 提问者采纳 肯定继承 访问父类私属性 或 继承继承父类所...
  • JAVA类中的private属性能否被继承

    千次阅读 2016-06-06 17:45:52
    讨论的问题:private属性能否被继承? 验证过程: 1.分别建立三个Test1/Test2/Test3,Test2继承Test1,Test3与Test2为空. 2.给这三个分别new一个对象,并比较各对象的空间大小. 3.结果猜测:如果Test1==Test2>...
  • Javaprivate使用

    万次阅读 多人点赞 2015-03-11 16:54:34
    Java中也有为了数据的封装性而声明的...也就说,private类型的数据成员只能在定义的时候修改,其余任何地方都可以,该的对象也可以。  而且,private类型的数据可以作为构造函数的输入。  不过,我
  • java中什么是实体,为什么实体的变量都用private修饰?能否举个实体的简单例子,谢谢
  • Java外部可以访问内部类private变量

    千次阅读 2019-04-04 15:05:05
    在讲Singleton时我举例时过这样一段代码: public class SingletonDemo { private static class SingletonHolder{ private static SingletonDemo instance=new SingletonDemo(); } private SingletonD...
  • 我们防止被继承,一般是将其构造函数私有化,这样该不能被实例化,也可以被继承,所以前面如果再来个 private关键字也就没有实际意义了
  • abstract的methods不能private修饰(Java)

    千次阅读 2016-09-11 19:21:47
    有如下错误代码:abstract class Something { ...解析: abstract的methods不能private修饰。abstract的methods就是让子类implement(实现)具体细节的,怎么可以用private把abstract method封锁起来呢? (同理,abstract
  • @Controller的方法为什么不能用private修饰解决方法:http://www.yayihouse.com/yayishuwu/chapter/1257
  • private final char value[]; 的 public String(String original) { this.value = original.value; this.hash = original.hash; } public String() { this.value = "".value; } value为什么调出来 String...
  • serialVersionUID 用来表明的不同版本间的兼容性,说白了:就是来比较版本的,为了让程序报出版本一致错误 Java的序列化机制是通过在运行时判断的serialVersionUID来验证版本一致性的。 在进行反序列化时...
  • Java关键字使用private 关键字

    千次阅读 2020-03-16 10:17:43
    → 对象实例化实现的时候要注意使用一对setter 和 getter 来修改和提取对象的属性。 下面就这两点展开解释: 可以对中的属性进行更加精确、细化的限制 在 → 对象实例化实现的时候要注意使用一对setter ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,141,746
精华内容 1,256,698
关键字:

java的类不能用private

java 订阅