精华内容
下载资源
问答
  • 首先,类只能使用public修饰是一个伪命题,应该说我们只见到过使用public修饰的类,还有一些类没有访问修饰符,此时访问权限default。其次,类实际上分为外部类和内部类(inner class),一般的类都是外部类,内部...

    首先,类只能使用public修饰是一个伪命题,应该说我们只见到过使用public修饰的类,还有一些类没有访问修饰符,此时访问权限为default。其次,类实际上分为外部类和内部类(inner class),一般的类都是外部类,内部类需要依赖外部类生成,内部类可以用各种访问修饰符修饰。所以问题转化成,为什么不能使用private和protected修饰外部类?

    我们知道,在Java中,访问修饰符可以修饰类、方法、变量和构造方法。

    访问权限由高到低有以下4种

    类内部本包子包外部包
    publicvvvv
    protectedvvvx
    defaultvvxx
    privatevxxx

    我们使用访问修饰符去修饰类,就是为了让类之间根据各种权限来访问。

    假如外部类使用private修饰,则不能被其它类所访问,这个类也就失去了意义。

    假如外部类使用protected修饰,看起来与default相比,在包内可访问的基础上,包外的子类也可访问。但包外想成为子类需要先继承父类,然而无法找到该父类实际上无法继承(先有鸡还是先有蛋的问题),效果与default一致,也就没必要存在了。

    关于内部类:

    内部类分为成员内部类、局部内部类、匿名内部类和静态内部类。

    成员内部类是定义在另一个类中的类,是最普通的一种内部类。

    class Circle {
      double radius = 0;
       
      public Circle(double radius) {
        this.radius = radius;
      }
       
      class Draw {   //内部类
        public void drawSahpe() {
          System.out.println("drawshape");
        }
      }
    }
    

    这样看起来,类Draw像是类Circle的一个成员,Circle称为外部类。成员内部类可以无条件访问外部类的所有成员属性和成员方法(包括private成员和静态成员)。

    内部类可以用private、protected、default、public修饰,使用private修饰只能在外部类内访问。

    关于接口

    public interface Comparable<T>{
      int compareTo(T other);
    }
    

    接口中的所有方法自动地属于public,在接口中声明方法时不必提供关键字public。

    修饰构造方法

    在单例设计模式中,我们使用private修饰构造方法,将构造器私有化,表示在类外部不能实例化该类。在类内部实例化后,提供一个可供外部访问的方法,返回实例对象。

    public class SingletonTest {
    	public static void main(String[] args) {
    		//测试
    		Singleton instance = Singleton.getInstance();
    		Singleton instance2 = Singleton.getInstance();
    		System.out.println(instance == instance2); // true
    		System.out.println("instance.hashCode=" + instance.hashCode());
    		System.out.println("instance2.hashCode=" + instance2.hashCode());
    	}
    }
    
    //饿汉式
    class Singleton {
    	//1. 构造器私有化
    	private Singleton() {
    	}
    	
    	//2.本类内部创建对象实例
    	private final static Singleton instance = new Singleton();
    	
    	//3. 提供一个公有的静态方法,返回实例对象
    	public static Singleton getInstance() {
    		return instance;
    	}
    

    最新2020整理收集的一些高频面试题(都整理成文档),有很多干货,包含mysql,netty,spring,线程,spring cloud、jvm、源码、算法等详细讲解,也有详细的学习规划图,面试题整理等,需要获取这些内容的朋友请加Q君样:11604713672

    展开全文
  • 今天在看spring事务的时候...于是就可以想一下为什么private方法不可以用用呢? 这时候把思路放到AOP上,spring中很多东西的实现都是依靠AOP,本质上也是依靠代理来实现。事务在spring中的实现其实就是生成bean对象的代

    今天在看spring事务的时候,发现特意有强调@Transaction注解是只能用在public方法上的,但没有说明原因,于是引起了我的好奇心。
    在经过我的思考和查阅相关博文确认了原因。

    首先,@Transaction一般用在方法上,它只能用在public方法上,那就意味着其不能用在private方法上。于是就可以想一下为什么private方法不可以用用呢?

    这时候把思路放到AOP上,spring中很多东西的实现都是依靠AOP,本质上也是依靠代理来实现。事务在spring中的实现其实就是生成bean对象的代理对象。在bean进行创建出实话时, 如果是有事务注解的方法,就会被进行增强,最终形成代理类。

    在spring中,有两种动态代理的方式,一种是jdk,它是将原始对象放入代理对象内部,通过调用内含的原始对象来实现原始的业务逻辑,这是一种装饰器模式;而另一种是cglib,它是通过生成原始对象的子类,子类复写父类的方法,从而实现对父类的增强。

    jdk中,如果是private的方法,显然是无法访问的,而在cglib中,也是同样,private方法也无法访问。于是原始对象的业务逻辑就丢失了,那么怎么进行增强呢?

    于是这个问题实际在于,被aop增强的方法都应该是public的,而不能是private的

    展开全文
  • Java为什么只能单继承

    千次阅读 2021-01-18 10:38:09
    Java为什么只能单继承 Java中类不能多继承类是为了安全。因为无论是抽象类还是非抽象类都包含非抽象的方法(非抽象类也可能没有),当类可以多继承类时,被继承的不同的父类可能会有同名同参的方法,如果子类也没有...

    继承和实现的区别
    1. 类继承类,实现接口。接口继承接口。

    2. 类只能单继承类(抽象类和非抽象类), 可以多实现接口。而接口可以多继承接口。

    Java为什么只能单继承
    Java中类不能多继承类是为了安全。因为无论是抽象类还是非抽象类都包含非抽象的方法(非抽象类也可能没有),当类可以多继承类时,被继承的不同的父类可能会有同名同参的方法,如果子类也没有重写这个同名同参的方法,则在子类的实例调用这个方法的时候就会出现冲突。

    举个例子:
    class Animal 继承了class Cat 和class Dog , 但是 class Cat 和class Dog 中有同名同参的方法sleep,且在Animal 中并没有重写方法sleep,那在Animal 的实例中调用sleep方法就会出现冲突,jvm就会不知道到底该调用哪一个方法。

    class Cat { sleep(){}};

    class Dog {sleep() {}};

    class Animal extends Cat , Dog {};

    Animal a = new Animal ();

    a.sleep();

    此时在执行a.sleep()时冲突就会出现。

    抽象类和接口的区别:
    如果一个抽象类中都是抽象方法,那么它跟接口又有什么用的区别?

    (1)抽象类只能被单继承,接口可以被多实现
    (2)接口只有定义(相对来说),抽象类可以有定义和实现

    展开全文
  • 为什么局域网中只能看到部分电脑

    千次阅读 2021-07-26 06:09:47
    局域网中只能看到部分电脑的原因:那是因为其他电脑没有开启共享模式,也就是来宾账号关闭了,需要在用户组中打开才行。局域网共享设置步骤如下:1、更改不同的计算机名,设置相同的工作组!2、我的电脑右键-管理-...

    局域网中只能看到部分电脑的原因:

    那是因为其他电脑没有开启共享模式,也就是来宾账号关闭了,需要在用户组中打开才行。

    局域网共享设置步骤如下:

    1、更改不同的计算机名,设置相同的工作组!

    2、我的电脑右键-管理-计算机管理-本地用户和组-用户:更改管理员用户名

    b78fb89a120ffe464f99e0b6151d17eb.png

    d56a3f87041e9c84385148eedbb8b2e4.png

    3、手动设置IP,将ip设置在同一个网段,子网掩码和DNS解析相同

    4、如何设置DNS解析:首先你可以使用自动获取,然后在开始-运行里面输入cmd后回车,在命令里面输入ipconfig/all后回车

    1a2dbf20bdde155f5b495b591f23e260.png

    5、运行里输入services.msc回车打开服务

    84206c75e90ad6a1f37e6817178babd8.png

    局域网的概念:

    局域网(英文:Local Area Network 缩写LAN),是指有限区域(如办公室或楼层)内的多台计算机通过共享的传输介质互连,所组成的封闭网络。局域网一般由网络硬件,网络传输介质和网络软件所组成。

    局域网可以实现文件管理、应用软件共享、打印机共享、工作组内的日程安排、电子邮件和传真通信服务等功能。共享的互连介质通常是一个电缆系统(如双绞线、同轴电缆、光纤等),也可以是红外信号、无线电等无线传输传输介质。依据拓扑结构的不同,局域网又分为以太网、令牌环网、无线局域网等类型。

    展开全文
  • 在我们日常用async/await编程的时候,会遇到这个错误,“await运算符只能用于异步方法中”,就不明白原因,既然我已经使用await,已经等待任务完成,已经是同步了,为什么await还只能用在异步方法中。 最近正好看到一...
  • (详解)为什么JAVA文件中只能含有一个Public类学习目标 Java 程序是从一个 public 类的 main 函数开始执行的,(其实是main线程),就像 C 程序 是从 main() 函数开始执行一样。 只能有一个 public 类是为了给类...
  • 文章目录使用@Transactional需要注意的问题1、@Transactional 只能应用到 public 方法才有效2、避免 Spring 的 AOP 的自调用问题 使用@Transactional需要注意的问题 1、@Transactional 只能应用到 public 方法才有效...
  • 展开全部NFC,即近场通讯,是一种非接触式通讯技术,相比62616964757a686964616fe4b893e5b19e31333431363534蓝牙等...NFC的工作频率13.56MHz,工作的理论距离是0~10cm。小区的门禁卡主要有两种类型ID卡和IC卡,...
  • 后台只能接收get请求,使用post传值接收的数据null问题出现的环境背景及自己尝试过哪些方法打断点看了一下post请求传过来的值null使用postman测试的,本以为是测试软件的问题,之后自己写了一个form表单测试,结果...
  • 第一点,什么是目的地址和源地址。 源IP地址:发送请求的IP地址。 目的IP地址:被请求的主机IP地址。 第二点, 当主机号全为1时广播地址,它代表了网络全部的主机,向广播地址发送数据时,所有同一网段的主机都会...
  • 在做项目的时候用到mysql,因为存储的数据是时间,自然想到timestamp类型,导入数据的时候前面还是正常的,突然碰到一个数据报错了,column ‘end_time ’ out of range。。。。这个数据和其他的数据没有什么不同...
  • 原标题:为什么如此强大的NFC却不能拷贝这些门禁卡?现在市场上的手机几乎都有NFC功能,不仅给我生活带来了便利,也我们解决了很多烦恼,接下来跟小编一起来看一下吧... NFC又称Near Field Communiaction,是一种...
  • 今天编辑word的时候,突然发现word不能保存,点击保存后,文档的时间没有改变,只能另存可以实现保存,文档的时间发生改变。百度搜索了一下,有说文件夹的权限问题,有说加载项的问题,有说内存不足的问题,有说...
  • 来源:阿枫科技曾几何时,多年前喊着“微信不好用”的我们,变得渐渐离不开它了,每次换新手机都需要重新进行各种验证然后登录...但电脑版的微信无需验证,而且只能通过扫码的形式登录,之前一直不知...
  • 手机软件在编程的时候可以设置这个就是识别你的网络到底是2G 3G 4G wifi或者其他类型这个代码上都是可以体现的我在这里以安卓例例如 我要识别你是不是wifiinfo ==nullinfo.getType() == ConnectivityManager....
  • 如果不了解这类软件的使用,不要这类软件进行优化。 ⑨如果以上操作不能解决,需要将电脑送到惠普授权的维修中心现场检测检查。 关注【惠普服务】微信公众平台,选择 “惠服务”→“服务中心查询”,可以查到维修...
  • 设有A、B两个表的记录数分别3和4,对两个表执行交叉联结查询,查询结果中最多可获得( )条记录。 (2.0分) 债权人没有正当理由拒绝受领标的物的,债务人可以将其提存。 国际商会制定的《国际贸易术语解释通则》适用于...
  • 在网上看一些文章的时候,发现好几次下面这样的话:如果经常需要同时对两个字段进行AND查询,那么使用两个单独索引不如建立一个复合索引,因为两个单独索引通常数据库只能使用其中一个,而使用复合索引因为索引本身就...
  • 原标题:Samba的使用(samba只能在内网使用 smb协议,可以使用NFS服有的时候在开发的环境中,是多种操作系统环境交叉使用,例如,Windows的电脑做开发,linux电脑做服务器,彼此之间需要相关的传递文件,共享信息。...
  • 举几个你遇到的MySQL中的隐式转换案例你觉得理想的MySQL备份策略应该是怎样的,实际上你真正的备份策略又是怎样的,为什么会有不同,出于什么原因呢?MySQL执行sql时一个表只能用到一个索引吗?MySQL的前缀索引有...
  • if语句中的条件表达式中只能使用

    千次阅读 2021-04-11 13:11:52
    if语句中的条件表达式中只能使用关系或逻辑表达式吗?别的人十句话都不会伤到小编,但你的一句话就可以把小编...if的返回值真或假,可以bool型变量进行存储,占用一字节。if语句中的条件表达式中只能使用关系或...
  • 目录自定义校验注解使用 需求:实体类中某个属性的值必须指定的值,比如 0 或者 1 自定义校验注解 1、创建自定义校验注解 EnumValue package com.pro.utils; import javax.validation.Constraint; import javax....
  • function clearText(){document.getElementById("userName").value="";document.getElementById("password").value="";document.getElementById("userName").focus();}function tsubmit(){var myForm=document.getEl...
  • Windows7 或 Windows 8 系统自带的磁盘管理功能压缩系统盘时经常会发现只能压缩出大约一半的空间,这是由于系统盘有一些不可移动的文件(例如 pagefile.sys、systemvolume、Hiberfil.sys)导致的。如果要从系统盘...
  • 从多层循环嵌套中退出时,只能使用goto语句|只能在循环体内使用break语句|在循环体内使用break语句或continue语句的作用相同答:只能在循环体内使用break语句庾信曾与徐陵一起任萧纲的东宫学士,( )文学的代表作家...
  • 为什么小程序开发版只能自己微信真机调试,别人微信不行?小程序开发版如何提供给测试人员测试 某天心血来潮想开发一款微信小程序,搞了三四天,终于完了基本的功能和接口,于是想向朋友推荐,扫码真机调试,结果...
  • Python只能在Windows平台上运行

    千次阅读 2021-01-29 15:29:26
    Python只能在Windows平台上运行答:×在我国山水画中,通常人们认为:“无骨则柔而不立,无血则枯石不生”吗?答:对智慧职教: 患者,女性,30岁,因甲状腺大部切除术,术后发音时音调低钝,但饮水时并不出现误咽、...
  • 远程主机无法用账号密码登录,只能用PublicKey登录: 解决: 此时有两种解决思路:1、使用PublicKey;2、想办法让远程主机支持密码登录。 1、使用PublicKey 话说PublicKey的中文意思是公钥,这个难不倒...
  • xlwt模块只能写xls文件,不能写xlsx文件(写xlsx程序不会报错,但最后文件无法直接打开,会报错)。
  • 解决mysql中只能通过localhost访问不能通过ip访问的问题原因是没开权限SELECT * FROM USER WHERE USER='root';grant all privileges on *.* to 'root'@'%' identified by '123456';flush privileges;1. 命令行进入...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,494,487
精华内容 1,797,794
关键字:

为什么只能用