- 浏览: 898808 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (537)
- Java SE (114)
- Struts (18)
- Hibernate (25)
- Spring (3)
- Page_Tech (41)
- Others (87)
- Database (29)
- Server (24)
- OpenSource_Tools (15)
- IDE_Tool (22)
- Algorithm (28)
- Interview (22)
- Test (28)
- Hardware (1)
- Mainframe (25)
- Web application (4)
- Linux (3)
- PHP (17)
- Android (1)
- Perl (6)
- ubuntu (1)
- Java EE (9)
- Web Analysis (5)
- Node.js (2)
- javascript (2)
最新评论
-
一键注册:
request.getRequestURL()和request.getRequestURI() -
SuperCustomer:
...
SED的暂存空间和模式空间 -
juyo_ch:
讲得挺好理解的,学习了
java 死锁及解决 -
chinaalex:
最后一题答案正确,但是分析有误.按照如下过程,上一行为瓶,下一 ...
zz智力题 -
liaowuxukong:
多谢博主啦,弱弱的了解了一点。
C++/Java 实现多态的方法(C++)
=========修饰符回顾==========
java类的成员变量通常有以下几种访问修饰符:
public、private、protected或者缺省,
例如在package first 中如果有一个类FirstClass有四个变量:
public int pp;
private int xiaopp;
protected int dd;
int xiaodd;
如果在package first 中有另一个类SecondClass继承了FirstClass:
那么他将继承FirstClass中的三个变量,分别是:
public int pp;
protected int dd;
int xiaodd;
如果在另一个package second中有一个类ThirdClass 继承了FirstClass,
那么他将继承FirstClass中的两个变量:
public int pp;
protected int dd;
从上面的例子我们可以看出访问修饰符被继承的关系:
public 可以被任何子类继承;
protected 虽然他会阻止包外的类访问,但他不会阻止包外的类继承;
缺省访问修饰符 不但只能被相同包内的类访问,而且还只能被相同包的子类继承;
private 访问局限在同一个类内,并且不可以被继承。
===================
本文仅讨论子类能否重写父类的方法,一旦重写成功,子类调用的时候是会覆盖父类的方法的。
子类重写父类方法的时候有两个考虑:
1.父类的方法不能降级,同级的话就要覆盖,例如public方法不能在子类中被声明为protected或者private(子类重载除外),否则会有
Cannot reduce the visibility of the inherited method from Father的编译错误。
2.父类的方法可以任意升级,但升级只有两种方式,要么覆盖,要么重载,覆盖就是方法体完全一样,重载则是参数必须改变,方法名称不变。
- import java.lang.reflect.Method;
- class Father{
- int a;
- protected int b = 5;
- protected void funcpro(){
- //父类的保护方法,子类能够访问,但子类自身没有
- System.out.println("father funcpro");
- }
- public void funcpub(){
- //父类公有方法,子类直接继承
- }
- private void funcpri(){
- //父类私有方法,子类不可见
- }
- }
- public class TestOveride extends Father {
- /**
- * @param args
- */
- //父类保护方法的重写
- // public void funcpro(){
- // //子类自己可以这样定义,将会覆盖父类protected方法
- // System.out.println("子类的func方法");
- // }
- // protected void funcpro(){
- // //ok
- //}
- // public short funcpro(){
- // //illegal 父类的protected和public方法在子类中是可见的,试想一下,如果编译器认为这个方法体正确,
- //那么子类调用funcpro的时候究竟调用哪个呢?这样没有能构成重载
- // }
- // private void funcpro(){
- // //illegal
- // }
- private void funcpro(int a){
- //这是方法重载,不会报错
- System.out.println("sun funcpro");
- }
- //父类公有方法的重写
- // private void funcpub(){
- // //illegal:Cannot reduce the visibility of the inherited method from Father
- // }
- // protected void funcpub(){
- // //illegal Cannot reduce the visibility of the inherited method from Father
- // }
- // public void funcpub(){
- // //ok
- // }
- // public int funcpub(){
- // //illegal 和父类的返回值不匹配
- // }
- // public int funcpub(int i){
- // //ok 子类构成重载
- // return 1;
- // }
- //父类私有方法的重写
- // public void funcpri(){
- // //ok
- // }
- // protected void funcpri(){
- // //ok
- // }
- // private void funcpri(){
- // //ok
- // }
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- TestOveride testOveride = new TestOveride();
- Class class1 = testOveride.getClass();
- try {
- Method[] methods = class1.getMethods();
- System.out.println("子类中的所有方法:"); //可以看到,并没有父类的funcpro方法
- for(Method m:methods){
- System.out.println(m);
- }
- System.out.println("子类调用父类的protected 方法:");
- testOveride.funcpro();
- System.out.println("子类调用自己的func方法:");
- testOveride.funcpro(1);
- System.out.println("子类调用父类的字段");
- System.out.println(testOveride.b);
- }catch(Exception e){
- e.printStackTrace();
- }
- }
- }
发表评论
-
maven 在Mac OS下运行的问题总结
2014-05-16 17:24 788在maven下生成基本的项目结构。 生成eclipse项 ... -
【zz】 java函数参数类型后添加三点的用法
2012-07-02 09:48 1010今天看到一个没见过的函数参数列表test(int... a), ... -
【zz】Java编码的理解和Java加载器的理解
2012-06-08 15:59 715一,我对java中编码的理解1. 编码的产生 对电脑而言 ... -
类加载器入门级应用
2012-06-08 15:17 8961、类加载器负责加载 Ja ... -
ClassLoader详解
2012-06-08 14:23 1214Point One 将J2EE应用程序移植到W ... -
Java静态代理与动态代理
2012-05-29 10:32 897JAVA的静态代理与动态代 ... -
JDK的动态代理深入解析(Proxy,InvocationHandler)(转)
2012-05-29 10:31 5141调用处理器InvocationHandle ... -
zz 动态反射实现AOP的简单原理
2012-05-28 17:46 866其实AOP的意思就是面向切面编程. OO注重的是我们 ... -
理解Java枚举在单例模式的应用
2012-06-05 15:50 12455.3.9 单例和枚举 按照《高效Java 第二版》中的说 ... -
Java 枚举的介绍
2012-05-23 16:50 0一、使用简单程序完成枚举的功能 例:使用简单类完成枚举操作 ... -
枚举类型的用法
2012-06-05 15:50 1386DK1.5引入了新的类型——枚举。在 Java 中它虽然算 ... -
单例模式的七种写法 (包括1.5新特性)
2012-05-23 16:18 0第一种(懒汉,线程不安全): <!--<br / ... -
重写hashCode方法的意义
2012-05-23 16:01 1602Java中的很多对象都override了equ ... -
JDK Log的设计思想
2012-05-23 14:39 1273最近在看《Agile Java》,看到日志一节,收获颇多,所以 ... -
[zz] Synchronized和Static Synchronized区别
2012-05-23 14:07 742通过分析这两个用法的分析,我们可以理解java中锁的概念。一 ... -
双精度、单精度的有效位数
2012-05-22 17:25 4999浮点数7位有效数字。(应该是单精度数) 双精度数16位有效 ... -
DecimalFormat 使用方法
2012-05-22 16:44 990我们经常要将数字进行格式化,比如取2位小数,这是最常见的。Ja ... -
Java Applet 无法运行的一个问题
2012-04-28 15:09 2500当你用JDK1.6开发出的新功能,在JDK1.6上re ... -
JDK1.5之中的Map相关的类
2012-04-26 10:14 1815java5的java.util包提供了大量集合类。其中最常用的 ... -
设计模式应用场景总结
2012-04-11 16:47 1231在J2EE的开发和测试中,其实不知不觉已经使用了许多设计模式。 ...
相关推荐
继承与访问修饰符知识点,希望对你有所帮助哦
1.继承 2.修饰符 3.多态 4.抽象类 小车穿沿在蜿蜒曲折的盘山公路上
day01-继承&修饰符
父子类可以是不同包 在不同包下面只有public 与 protected 可以访问,而且protected必须是在继承关系下才能够访问
计算机二级摸底测验J继承和接口和java访问权限修饰符总结ava题目
PHP 类中修饰符 abstract 抽象类 abstract 抽象方法 抽象类继承抽象类 静态抽象方法
sealed 修饰符表示密封用于类时,表示该类不能再被继承,不能和 abstract 同时使用,因为这两个修饰符在含义上互相排斥用于方法和属性时,表示该方法或属性不能再被重写,必须和 override 关键字一起使用,
继承和接口和java访问权限修饰符总结.pdf
继承和接口和java访问权限修饰符总结.doc
Typescript中的类 类的定义 继承 类里面的修饰符Demo
第20天,对构造器以及this关键字和封装继承和访问修饰符的学习
今天就所学知识, 对Java中三个修饰符做一个简单的总结 abstract关键字(要求子类强制重写父类的方法) abstract使用总结: 1. abstract修饰的方法没有方法体 2. abstract修饰的方法必须定义在abstract修饰的类内或者...
构造函数在创建对象时初始化对象 包可用package 来申明 ,可用import 来导入包 目标 理解继承及其特点 运用JAVA程序实现继承 理解多态及其特点设计 运用JAVA程序实现多态 掌握访问修饰符和方法修饰符 继承 继承的...
可见性递增图于 见P383 ,自己理解表11-2可见性递增私有的、默认(无修饰符)、保护、公共成员Visibility Modifiers C1,C2,C3同包C4,C5同包11.15 防止扩展和重写final class不能被继承 final class Math { ......
通过今天的学习内容进行总结,避免遗忘,加强记忆
文章目录继承常用的关键字this关键字static关键字super关键字final关键字封装及权限修饰符封装的作用及其优点权限修饰符封装的使用细节多态多态的概念多态的使用要点对象的转型instanceof运算符类型自动提升及强制...
new:在用作声明修饰符时,new 关键字可以显式隐藏从基类继承的成员。 隐藏继承的成员时,该成员的派生版本将替换基类版本。 以上是这两个修饰符的解释。对于这两者之间的区别之类的说法,其实网上找到的有很多,...
JavaSE基础:标识符、关键字、字面量、数据类型、类型转换、修饰符、代码块、方法重载、this关键字、继承、方法重写、抽象类、接口、异常、I/O流
部分源码
4、子类复写父类中的方法时,子类中的 访问修饰符的范围要大于等于 父类的【 继承只能发扬光大,至少保持不变。不可以丢失东西。】 以上这篇浅谈php中的访问修饰符private、protected、public的作用范围就是小编分享...