JAVA访问和修饰符的关系一览表

Modifier Class Package Subclass World
public Y Y Y Y
protected Y Y Y N
no modifier Y Y N N
private Y N N N

  • 关于父类覆写以及protected的一些细节:

package1中的代码:

MainClass.java

package org.seancheer.package1;

import org.seancheer.package2.SecondChild;

public class MainClass {
public static void main(String[] args)
{
/* * 对于没有标识符的方法,默认的是包访问,所以对于SecondChild方法, * 虽然也有同名的func()方法,但是实际上并没有进行覆写操作,调用的 * 还是父类的方法。 */ ParentClass parentOne = new FirstChild(); parentOne.func(); //func() in first child ! ParentClass parentTwo = new SecondChild(); parentTwo.func(); //func() in the parent class ! /* * 注意!!!!和c++不一样的地方,protected修饰符的方法也可被实例访问到, * 但是必须有个前提:该实例new出来的位置必须和类在同一个package内,在其 * 他package是无法访问到的! */ ParentClass parent = new ParentClass();
parent.protectedMethod(); } }

FirstChild.java

package org.seancheer.package1;
public class FirstChild extends ParentClass{ @Override void func() { // TODO Auto-generated method stub System.out.println("func() in first child !"); } }

ParentClass.java

package org.seancheer.package1;

public class ParentClass {

    void func()

    {

       System.out.println("func() in the parent class !");

    }

    protected void protectedMethod() {

       System.out.println("protectedMethod() in the parent class !");

    }

}

package2中的代码:

SecondChild.java

package org.seancheer.package2;

import org.seancheer.package1.ParentClass;

public class SecondChild extends ParentClass{

    void func()

    {

       System.out.println("func() in the second child !");

    }

    public static void main(String[] args)

    {

       ParentClass parent = new ParentClass();

       //注意,是无法访问到protected方法的,但是如果在同一个包内就是可以访问的!

       //parent.protectedMethod();

    }   

}

Java语法细节 - 可见性的更多相关文章

  1. JAVA语法细节(1)

    1.变量的作用域 变量的作用域从变量定义的位置开始,到变量所在的那对大括号结束.变量定义内存开辟一块空间用于该变量,变量到达作用域时,该变量从内存中消失. 2.变量的数据类型 变量基本数据类型:byt ...

  2. Java语法细节 - synchronized和volatile

    目录 synchronized关键字 关键字volatile synchronized关键字 synchronized关键字锁住方法和this的不同之处: public synchronized vo ...

  3. Java语法细节 - 内存和枚举

    目录 Java申请DirectBuffer ByteBuffer的position,limit,capacity,flip操作之间的关系 枚举实现单例模式 Java申请DirectBuffer /*- ...

  4. Java语法细节(2)

    1.逻辑运算符 &和&&,|和||的区别 &&:和&的结果是一样的,但运算过程有区别 &&:只要左边结果为假,就不再执行右边的,结果为假 ...

  5. Java语法细节 - try_finally和set相关

    目录 try-catch-finally的关系 TreeSet和HashSet的实现原理和区别 BigDecimal中的一些坑 当BigDecimal在HashSet/HashMap和TreeSet/ ...

  6. Java语法知识总结

    一:java概述: 1991 年Sun公司的James Gosling等人开始开发名称为 Oak 的语言,希望用于控制嵌入在有线电视交换盒.PDA等的微处理器: 1994年将Oak语言更名为Java: ...

  7. java优化细节记录

    此处是为了记录一些优化细节,从网上收集而来,仅供后续代码开发参考使用,如发现更好的,会不断完善 首先确认代码优化的目标是: 减小代码的体积 提高代码运行的效率 代码优化细节 1.尽量指定类.方法的fi ...

  8. 【Java】这 35 个 Java 代码优化细节!

    前言 代码 优化 ,一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没 ...

  9. Java语法

    java语法: 一个java程序可以说是一系列对象的集合,而这些对象都要通过调用彼此的方法来协同工作. 对象: 对象是一个实例,例如:一只猫,它是一个对象,有状态和行为.它的状态状态有:颜色,名字,品 ...

随机推荐

  1. A previous installation of Qt5 Visual Studio Add-in was detected. Please uninstall it before running this installer解决办法

    前段时间在安装Qt Visual Studio插件的时候,安装到一半不小心中止了,结果后来怎么安装都不行,提示已经安装了,要先卸载, 可是到哪里都找不到有卸载的,因为压根就没有安装完成.这可害苦我了. ...

  2. Mark SDL2 Lazy Foo's Producations

    重点 初学SDL2,此处为笔记.有错误还请指出. 13)When our SDL 2 application runs, the operating system needs to be able t ...

  3. Java面试题 静态代码块 构造代码块 构造方法 的执行顺序

    JAVA中的静态代码块 构造代码块 构造方法执行顺序: 静态代码块(类加载时执行)>>构造代码块>>构造方法 下面展示一个简单的例子,推荐大家动手运行一遍: public cl ...

  4. C++入门篇十三

    常对象: const  Person p1; 不可以调用普通成员函数,除非前面加了函数前面加了const可以调用常函数在对象之前加入const修饰 const Person p1; 常函数:void ...

  5. python 视频转成代码视频

    # -*- coding:utf-8 -*- # coding:utf-8 import os, cv2, subprocess, shutil from cv2 import VideoWriter ...

  6. Sprite子节点透明度不能跟随父节点变化的问题求解(转)

    原出处忘记了. [已解决]Sprite子节点透明度不能跟随父节点变化的问题求解 自己封装了一个按钮控件,点击的时候封装了一些动作,其中有透明度的变化. 当点击发生的时候,Sprite本体执行正常,但是 ...

  7. 如何获取AWS的Access Key ID 和 Secret Access Key (Unable to find credentials)

    获取AWS的Access Key ID 和 Secret Access Key 是你可以访问AWS的依据,比如S3的“使用预签名 URL 上传对象”. 1.登录AWS控制台 2.在“AWS servi ...

  8. JAVA第二次实训作业

    1.一维数组的创建和遍历. 声明并创建存放4个人考试成绩的一维数组,并使用for循环遍历数组并打印分数. 要求: 首先按“顺序”遍历,即打印顺序为:从第一个人到第四个人: 然后按“逆序”遍历,即打印顺 ...

  9. linux 下修改网关mac地址

    以rtl8196e为例 eth0:mac 地址设为123456789012 # flash set hw_nic0_addr  123456789012 eth1:mac 地址设为1122334455 ...

  10. Python3学习笔记十三

    1.   css 老师的博客:http://www.cnblogs.com/yuanchenqi/articles/6856399.html 选择器:找到想要改变的标签 css的功能:渲染和布局 2. ...