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. Linux 技巧:让进程在后台可靠运行的几种方法【转】

    我们经常会碰到这样的问题,用 telnet/ssh 登录了远程的 Linux 服务器,运行了一些耗时较长的任务, 结果却由于网络的不稳定导致任务中途失败.如何让命令提交后不受本地关闭终端窗口/网络断开 ...

  2. MySQL对以特定名字开头的数据库进行授权

    对以"db_1"开头的数据库进行授权 grant all privileges on `db_1%`.* to dp_admin identified by 'password'; ...

  3. NB学校的NB课程的NB教材——CSAPP

    CMU是全美以至全球公认的CS最猛的大学之一,没办法,作为CS的发源地,再加上三位神一样的人先后在此任教:Alan Perlis(CS它祖宗+第一届Turing奖获得者).Allen Newell(A ...

  4. FATAL ERROR in native method: JDWP No transports initialized, jvmtiError=AGENT_ERROR_TRANSPORT_INIT(197)”

    https://stackoverflow.com/questions/29188789/eclipse-mac-os-x-debug-error-fatal-error-in-native-meth ...

  5. java 冒泡排序 day003

    一.冒泡排序: 利用冒泡排序对数组进行排序 二.基本概念: 依次比较相邻的两个数,将小数放在前面,大数放在后面.即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后.然后比较第2个数和第3个数, ...

  6. Android回调监听的实现

    一.首先定义监听函数 public interface OnKeyValueListener { void getKeyValueClick(String value); } 二.在需要传递内容的 A ...

  7. java 动态代理模式(jdk和cglib)

    package proxy.dynamicproxy; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Met ...

  8. js高级类型

    一.funciton数据类型 1.定义:一个function类型对象,用于管理一个具体函数. function类型相当于Java中java.lang.reflect.Method 2.函数类型对象创建 ...

  9. 2018-2019-2 20165328《网络对抗技术》Exp0 Kali安装week1

    1.下载Kaili安装资源并解压安装到虚拟机: 2.修改默认字体与共享文件设置: 3.更新软件源与下载中文输入法: 4.安装完成.

  10. James Munkres Topology: Lemma 21.2 The sequence lemma

    Lemma 21.2 (The sequence lemma) Let \(X\) be a topological space; let \(A \subset X\). If there is a ...