- 浏览: 919549 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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 834在maven下生成基本的项目结构。 生成eclipse项 ... -
【zz】 java函数参数类型后添加三点的用法
2012-07-02 09:48 1052今天看到一个没见过的函数参数列表test(int... a), ... -
【zz】Java编码的理解和Java加载器的理解
2012-06-08 15:59 757一,我对java中编码的理解1. 编码的产生 对电脑而言 ... -
类加载器入门级应用
2012-06-08 15:17 9311、类加载器负责加载 Ja ... -
ClassLoader详解
2012-06-08 14:23 1253Point One 将J2EE应用程序移植到W ... -
Java静态代理与动态代理
2012-05-29 10:32 945JAVA的静态代理与动态代 ... -
JDK的动态代理深入解析(Proxy,InvocationHandler)(转)
2012-05-29 10:31 5195调用处理器InvocationHandle ... -
zz 动态反射实现AOP的简单原理
2012-05-28 17:46 904其实AOP的意思就是面向切面编程. OO注重的是我们 ... -
理解Java枚举在单例模式的应用
2012-06-05 15:50 12825.3.9 单例和枚举 按照《高效Java 第二版》中的说 ... -
Java 枚举的介绍
2012-05-23 16:50 0一、使用简单程序完成枚举的功能 例:使用简单类完成枚举操作 ... -
枚举类型的用法
2012-06-05 15:50 1436DK1.5引入了新的类型——枚举。在 Java 中它虽然算 ... -
单例模式的七种写法 (包括1.5新特性)
2012-05-23 16:18 0第一种(懒汉,线程不安全): <!--<br / ... -
重写hashCode方法的意义
2012-05-23 16:01 1652Java中的很多对象都override了equ ... -
JDK Log的设计思想
2012-05-23 14:39 1316最近在看《Agile Java》,看到日志一节,收获颇多,所以 ... -
[zz] Synchronized和Static Synchronized区别
2012-05-23 14:07 790通过分析这两个用法的分析,我们可以理解java中锁的概念。一 ... -
双精度、单精度的有效位数
2012-05-22 17:25 5118浮点数7位有效数字。(应该是单精度数) 双精度数16位有效 ... -
DecimalFormat 使用方法
2012-05-22 16:44 1031我们经常要将数字进行格式化,比如取2位小数,这是最常见的。Ja ... -
Java Applet 无法运行的一个问题
2012-04-28 15:09 2541当你用JDK1.6开发出的新功能,在JDK1.6上re ... -
JDK1.5之中的Map相关的类
2012-04-26 10:14 1872java5的java.util包提供了大量集合类。其中最常用的 ... -
设计模式应用场景总结
2012-04-11 16:47 1276在J2EE的开发和测试中,其实不知不觉已经使用了许多设计模式。 ...
相关推荐
final 访问修饰符表示使用此修饰符的类不能够被继承。final 变量的值只能被分配一次,不能更改。 abstract 访问修饰符 abstract 访问修饰符表示抽象类,抽象类不能被实例化。抽象类中可以定义抽象方法,抽象方法是...
Java 修饰符是 Java 语言中的一种基本语法元素,用于控制访问权限、继承关系、抽象类和静态成员变量等方面。Java 修饰符可以分为两大类:访问修饰符和非访问修饰符。访问修饰符包括 public、protected、default 和 ...
C#学习之路--访问修饰符 访问修饰符是C#语言中的一种机制,用于控制对象的访问权限。在C#中,访问修饰符有五种...此外,访问修饰符还可以帮助我们实现继承和多态性,例如,使用protected修饰符可以实现继承和多态性。
继承与访问修饰符是面向对象编程中的核心概念,它们在定义类的结构和关系时起着至关重要的作用。本文将详细探讨这两个主题,以便更好地理解它们如何影响代码的可访问性和可扩展性。 首先,访问修饰符是用来控制类的...
继承实现了代码的复用与维护,修饰符控制了类和成员的访问权限,多态使得程序更加灵活,而抽象类为子类提供了一个共同的模板和抽象方法实现的要求。理解和掌握这些知识点对于学习和应用Java面向对象编程至关重要。
### 理解Java中的类的各种权限修饰符 在Java编程语言中,权限修饰符用于控制类、方法、变量等成员的访问级别。这有助于提高代码的安全性和封装性。本文将详细探讨Java中的五种权限修饰符:`public`、`protected`、`...
在C#编程语言中,访问修饰符是用来控制类、接口、结构、枚举以及它们的成员(如字段、方法、属性等)的可访问性的关键元素。这些修饰符定义了哪些代码可以访问特定的类型或成员,从而确保了代码的封装性和安全性。...
在Java编程语言中,修饰符是用来限制或指定代码元素(如类、方法、变量)的访问权限、特性或行为的关键词。以下是对标题和描述中提及的Java修饰符及其相关知识点的详细介绍: 1. 类的访问控制修饰符: - **public*...
- **final**: 最终类修饰符,防止类被继承。通常用于创建不可变类或工具类。 - **default**: 缺省访问控制符,没有明确指定访问级别的类或接口,只允许同一包内的访问。 2. **域的控制修饰符** - **public**: ...
C#的访问修饰符 C#语言中提供了多种访问修饰符,以控制类、成员变量和成员方法的访问权限。这些修饰符可以分为两类:访问修饰符和非访问修饰符。 访问修饰符包括public、private、protected、internal、protected ...
这三个修饰符在类继承和包管理中起着关键作用。在设计类的继承结构时,通常会使用`private`来隐藏实现细节,`protected`来允许子类进行必要的扩展,而`public`则用于提供公共的接口供其他类调用。 在提供的压缩包...
- **定义**:`protected internal`修饰符结合了`protected`和`internal`的特点,允许类在同一程序集中或者通过继承关系被访问。 - **应用场景**: - 当需要同时满足内部程序集访问和继承体系内访问的需求时。 - 在...
当子类中有一个与父类相同的成员名称时,可以使用new修饰符来明确指出是新的成员,而不是继承自父类的。 - **static**构造函数用于初始化静态成员,不能接收任何参数,也不能对非静态成员进行初始化。它会在第一次...
根据 JAVA 访问修饰符的特性和使用范围,我们可以将其分为三类:修饰符类的访问修饰符、属性的访问修饰符和方法的修饰符。 一、修饰符类的访问修饰符 修饰符类的访问修飾符共有四种:默认、public、abstract 和...
- `protected`:受保护访问修饰符,允许同一类及继承类访问。 - `internal`:程序集内访问,只允许在同一程序集内的类访问。 - `protected internal`:受保护和内部,允许同程序集或继承类访问。 - `private ...
继承和接口和java访问权限修饰符总结 本文总结了 Java 中的继承、接口和访问权限修饰符的概念和使用。继承是 Java 中的一种机制,允许子类继承父类的属性和方法,並且可以对父类的方法进行重写或重载。动态绑定是指...
day01-继承&修饰符
Java语言中的修饰符是编程语法中的重要组成部分,它们用于定义类、接口、变量和方法的特性,从而控制访问权限、实现抽象概念、确保不可变性以及优化代码结构。本章将详细阐述Java中的主要修饰符。 首先,我们讨论...
访问控制修饰符和非访问控制修饰符共同作用,不仅实现了封装、继承和多态等面向对象编程的基本特征,还提供了更高级的功能,如线程安全、不可变性和代码优化等,使Java程序具备了强大的灵活性和适应性。