这个似乎都是老生常谈了,特别是找工作第一轮笔试的时候很爱考这些,再罗列一次,特别要注意继承的情况:

    默认状态:即是不加修饰符的时候,所谓的default状态,在类内部可以被访问,在相同的包下面的类也可以互相被使用,跨包则不可访问。

    public:这个当然是访问权限最宽的时候了,不仅可以在类内部进行访问,也可以在同一包中进行访问,还可以跨包来进行访问。

    private:被private修饰符修饰的属性与方法只能在该类的内部进行使用,在同一个包下的不同类也不能被互相访问,子类不会继承父类的private方法以及private属性。

    protected:这个总是忘记,特殊性就是体现在继承关系存在的时候。类内部肯定可以访问,也可以在同一个包下进行访问,该类的子类也可以进行访问,子类与父类不在同一个包中的时候不可以访问父类的protected属性或者是调用父类的protected方法。

特别注意一下protected以及public的区别,特别是跨包的时候,protected指的是受保护类型,继承关系存在的前提下,子类可以访问父类的受保护的方法和属性(但这个前提是在同一个包下),public则不会受到这个限制,即使是跨包的情况,也能互相访问。

//下面的例子是在同一个包里面的继承情况
//子类可以调用父类的 crow 方法
package testa; public class Animal {
protected void crow(){
System.out.println("animal howl");
}
}
package testa; public class Cat extends Animal {
public static void main(String[] args) {
Animal c=new Cat();
c.crow();
}
} //下面这个就是在不同的包中来继承
//在testb包中的Dog类继承 了在testa包中的Animal类 之后再调用父类的方法
//这样就会报编译错误
package testb;
import testa.Animal;
public class Dog extends Animal{
public static void main(String[] args) {
Animal a=new Dog();
//compile error:The method crow() from the type Animal is not visible
a.crow();
}
}

  

关于clone()方法使用的时候正式类似于上面的情况,虽然clone()是在Object类中定义的方法,修饰符是protected,但是在自己写的类中(继承了Object类但不在同一个包下),如果想使用clone()方法,则一定要重新把它覆盖了,并且继承Cloneable接口,否则会有编译错误。具体可以参考这个:http://hxraid.iteye.com/blog/522171。

最新文章

  1. 通过js调用android原生方法
  2. PHPExcel读取excel文件
  3. 用Mockito mock普通的方法
  4. toastr 自定义提示
  5. Shell命令_正则表达式
  6. C语言实现单链表-04版
  7. django cycle标签
  8. 快速、冒泡排序算法(PHP版)
  9. SQL入门学习4-复杂查询
  10. XInput和DirectInput
  11. 设置UIButton中的文字和图片,设置UILabel的文在显示不同颜色
  12. 洛谷P1608路径统计
  13. encoding and Endian
  14. activiti5/6 系列之--Activiti与BPMN2.0规范相关节点对应关系
  15. django-访问控制
  16. linux安装curl扩展
  17. 【转载】linux ls -l命令详解
  18. 在Visual Studio 2013里使用 Microsoft SQL Server Compact Edition
  19. C++虚析构函数的作用
  20. 分别用C/C++ 和 C#实现简单的观察者模式

热门文章

  1. java NIO介绍
  2. char 指针如何判断字符串需要输出长度
  3. 搜索---BFS
  4. asp.net中的<% %>,<%= %>,<%# %><%$ %>的使用
  5. javascript中slice(),splice(),split(),substring(),substr()使用方法
  6. Connection keepalive
  7. mysql安装,卸载; 库和表的基础操作
  8. windows 10 自动升级后环境变量无效
  9. 在Eclipse-jee-neon中配置springsource-tool-suite
  10. 【爬虫】Selenium+chrome