Java语法细节 - 可见性
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语法细节 - 可见性的更多相关文章
- JAVA语法细节(1)
1.变量的作用域 变量的作用域从变量定义的位置开始,到变量所在的那对大括号结束.变量定义内存开辟一块空间用于该变量,变量到达作用域时,该变量从内存中消失. 2.变量的数据类型 变量基本数据类型:byt ...
- Java语法细节 - synchronized和volatile
目录 synchronized关键字 关键字volatile synchronized关键字 synchronized关键字锁住方法和this的不同之处: public synchronized vo ...
- Java语法细节 - 内存和枚举
目录 Java申请DirectBuffer ByteBuffer的position,limit,capacity,flip操作之间的关系 枚举实现单例模式 Java申请DirectBuffer /*- ...
- Java语法细节(2)
1.逻辑运算符 &和&&,|和||的区别 &&:和&的结果是一样的,但运算过程有区别 &&:只要左边结果为假,就不再执行右边的,结果为假 ...
- Java语法细节 - try_finally和set相关
目录 try-catch-finally的关系 TreeSet和HashSet的实现原理和区别 BigDecimal中的一些坑 当BigDecimal在HashSet/HashMap和TreeSet/ ...
- Java语法知识总结
一:java概述: 1991 年Sun公司的James Gosling等人开始开发名称为 Oak 的语言,希望用于控制嵌入在有线电视交换盒.PDA等的微处理器: 1994年将Oak语言更名为Java: ...
- java优化细节记录
此处是为了记录一些优化细节,从网上收集而来,仅供后续代码开发参考使用,如发现更好的,会不断完善 首先确认代码优化的目标是: 减小代码的体积 提高代码运行的效率 代码优化细节 1.尽量指定类.方法的fi ...
- 【Java】这 35 个 Java 代码优化细节!
前言 代码 优化 ,一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没 ...
- Java语法
java语法: 一个java程序可以说是一系列对象的集合,而这些对象都要通过调用彼此的方法来协同工作. 对象: 对象是一个实例,例如:一只猫,它是一个对象,有状态和行为.它的状态状态有:颜色,名字,品 ...
随机推荐
- TypeScript 错误property does not exist on type Object
TypeScript 错误property does not exist on type Object 在TypeScript中如果按JS的方式去获取对象属性,有时会提示形如Property 'val ...
- 极客时间-左耳听风-程序员攻略-Linux系统、内存和网络
程序员练级攻略:Linux系统.内存和网络 Linux 系统相关 Red Hat Enterprise Linux 文档 . Linux Insides ,GitHub 上的一个开源电子书,其中讲述了 ...
- Day 18: 记filebeat内存泄漏问题分析及调优
ELK 从发布5.0之后加入了beats套件之后,就改名叫做elastic stack了.beats是一组轻量级的软件,给我们提供了简便,快捷的方式来实时收集.丰富更多的数据用以支撑我们的分析.但由于 ...
- Python爬虫基础之Cookie
一.Cookie会话 简单地说,cookie就是存储在用户浏览器中的一小段文本文件.Cookies是纯文本形式,它们不包含任何可执行代码.一个Web页面或服务器告之浏览器来将这些信息存储并且基于一系列 ...
- js前台计算两个日期的间隔时间(时间差)
在后台传来两个时间字段,从中解析出两个字符串类型的日期格式 需要在前台解析出两个时间的间隔 这里采用获取两个日期的时间戳进行计算 时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时 ...
- iframe 加form提交数据
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- mysql 与 oracle 的时间查询
关于时间区间查询 1.mysql select * from t_date a where date_format (a.delete_time,'%Y-%m-%d') <date_format ...
- java----tomcat
下载: 测试使用一般下载zip格式,在服务器上布置tomcat使用直接安装格式(install) https://tomcat.apache.org/download-90.cgi 使用 在windo ...
- rpm和yum软件管理
rpm简介 数据库管理工具,通过读取数据库,判断软件是否安装,如已安装可读取出来所有文件的所在位置等,并可以实现删除这些文件. rpm:RPM is Redhat Package Manager(递归 ...
- 为什么MySQL数据库要用B+树存储索引?
小史:树的话,无非就是前中后序遍历.二叉树.二叉搜索树.平衡二叉树,更高级一点的有红黑树.B 树.B+ 树,还有之前你教我的字典树. 红黑树 一听到红黑树,小史头都大了,开始抱怨了起来. 小史:红黑树 ...