首页 > 编程语言 >java public、protected、default、private

java public、protected、default、private

时间:2022-09-24 12:12:10浏览次数:46  
标签:TryVisits TestVisit default private 访问 protected java public

java 的访问控制符为了控制类还有类对应方法的访问做限制。

如上的图表总结了类方法的访问控制范围,其实类的访问控制范围也是类似的情况。声明为public则不管外部包还是内部都能够访问,如果为default则只能本包内能够访问

关于类方法的访问范围,我们比较熟悉的是private还有public,private只有本类的内部才能访问而public则到处都能访问

这里主要聊的是default和protected

 

一、default

我们的访问限制中没有default这个关键字,但是我们没有写public、protected、default或者private则表示为default

package com.example.exampletest.testvisit;

public class TestVisit {
    public void printPublic() {
        System.out.println("TestVisit:printPublic");
    }
    protected void printProtected() {
        System.out.println("TestVisit:printProtected");
    }
    void printDefault() {
        System.out.println("TestVisit:printDefault");
    }
    private void printPrivate() {
        System.out.println("TestVisit:printPrivate");
    }
}

如上的printDefault函数可以在包路径为com.example.exampletest.testvisit 中的其他类中访问的到

那么假设有一个包名为:com.example.exampletest.testvisit.nextfold 中的类是不能访问到TestVisit 中的printDefault函数

 

二、protected

在同一个包中,访问范围跟default一样就不赘述;这里主要讲不同包之间的访问

package com.example.exampletest;

class TryVisits extends TestVisit {
    void printVisit() {
        this.printPublic();
        this.printProtected();
    }
}

在包com.example.exampletest中有类TryVisits 继承TestVisit,TryVisits作为TestVisit的子类,虽然跟TryVisits不在同一个包中,但是依旧能够访问的到printProtected

package com.example.exampletest;

public class HelloWorld {
    private void testVisits() {
        TryVisits visits = new TryVisits();
        visits.printPublic();
//        visits.printProtected(); // 访问不到
    }
}

如上在跟TryVisits同一个包中的HelloWorld类new出来的TryVisits也是不能访问TryVisits的父类的成员函数printProtected,因为HelloWorld既不是TestVisit的子类也不是跟TestVisit在同一个包中。

 

标签:TryVisits,TestVisit,default,private,访问,protected,java,public
From: https://www.cnblogs.com/czwlinux/p/16725179.html

相关文章

  • Java8提供的函数接口
    目录参考资料函数接口1.Function<T,R>2.Predicate3.Supplier4.UnaryOperator参考资料https://docs.oracle.com/javase/8/docs/api/函数接口Java提供的函数接口......
  • JavaScript Array(数组) 对象
    数组:数组对象是使用单独的变量名来存储一系列的值数组可以用一个变量名存储所有的值,并可以用变量名访问任何一个值数组中每一个元素都有自己的id,方便访问创建数组:三种......
  • 适合新手的 JavaScript
    适合新手的JavaScriptJavaScript与css和html一起是浏览器中的原生语言,它的职责是为网页提供交互性和动态性。它具有一些基本特征,例如:解释:浏览器逐行读取我们的......
  • JavaScript 字符串(String) 对象
    字符串可以使用单引号或者双引号使用位置索引可以访问字符串中的任何字符,字符第一个字符为【0】,依次等可在字符串中使用引号varanswer="Heiscalled'Johnny'";也可......
  • Java面试题汇总
    1、Java基础1.1、ConcurrentHashMap的底层实现,jdk1.7和jdk1.8的区别;1.2、GC的原理,涉及到的算法有哪些,GC调优怎么处理;1.3、ArrayList和LinkedList的区别是什么,底层实现是......
  • 吃透JAVA的Stream流操作,多年实践总结
    在JAVA中,涉及到对数组、Collection等集合类中的元素进行操作的时候,通常会通过循环的方式进行逐个处理,或者使用Stream的方式进行处理。例如,现在有这么一个需求:从给定句子......
  • 面试说:聊聊JavaScript中的数据类型
    前言请讲下JavaScript中的数据类型?前端面试中,估计大家都被这么问过。答:Javascript中的数据类型包括原始类型和引用类型。其中原始类型包括null、undefined、boole......
  • JavaScript Number 对象
    JavaScript数字:可以使用也可以不使用小数点来书写极大或极小的数字可通过科学(指数)计数法来写 JavaScript数字均为64位:所有的数字都是由浮点型类型  精度:......
  • java设计模式之七大原则
    java设计模式 以下内容为本人的学习笔记,如需要转载,请声明原文链接   https://www.cnblogs.com/lyh1024/p/16724932.html 设计模式1.设计模式的目的编写软件过......
  • JavaScript 中的 Web 组件介绍:创建一个 hello-world 的 Web 组件
    JavaScript中的Web组件介绍:创建一个hello-world的Web组件WebComponents是一套不同的技术,允许您创建可重用的自定义html元素。它的伟大之处在于对组件的逻辑和......