继承中关于属性的一些问题

和类的成员方法一样,我们也可以定义属性的重载、虚属性、抽象属性以及密封属性的概念。

与类和方法一样,属性的修饰也应符合下列规则:

属性的重载

●在派生类中使用修饰符的属性,表示对基类中的同名属性进行重载。

●在重载的声明中,属性的名称、类型、访问修饰符都应该与基类中被继承的属性一致。

●如果基类的属性只有一个属性访问器,重载后的属性也应只有一个。但如果基类的属性同时包含get和set属性访问器,重载后的属性可以只有一个,也可以同时有两个属性访问器。

注意:与方法重载不同的是,属性的重载声明实际上并没有声明新的属性,而只是为已有的虚属性提供访问器的具体实现。

虚属性

●使用virtual修饰符声明的属性为虚属性。

●虚属性的访问器,包括get访问器和set访问器,同样也是虚的。

抽象属性

●使用abstract修饰符声明的属性为抽象属性

●抽象属性的访问器也是虚的,而且没有提供访问器的具体实现。这就要求在非虚的派生类中,由派生类自己通过重载属性来提供对访问器的具体实现。

●abstract和override修饰符的同时使用,不但表示属性是抽象的,而且它重载了其类中的虚属性。这是属性的访问器也是抽象的。

●抽象属性只允许在抽象类中声明。

●除了同时使用abstract和override修饰符这种情况之外,static,virtual,override和abstract修饰符中任意两个不能再同时出现。

密封属性

●使用sealed修饰符声明的属性为密封属性。类的密封属性不允许在派生类中被继承。密封属性的访问器同样也是密封的。

●属性声明时如果有sealed修饰符,同时也必须要有override修饰符。

时间: 2024-08-18 03:23:33

继承中关于属性的一些问题的相关文章

为什么需要使用VC#中的属性?属性有什么好处?属性也可以继承么?

问题描述 为什么需要使用VC#中的属性?属性有什么好处?属性也可以继承么? 为什么需要使用VC#中的属性?属性有什么好处?属性也可以继承么? 解决方案 属性可以封装对象的成员,防止直接访问它们.属性可以继承,可以重写,因为属性本质上是方法. 解决方案二: 访问和继承属性

继承中子类的属性行为

问题描述 继承中子类的属性行为 继承 子类中是实际存在父类的属性和方法,还是只是能调用,实际没有 解决方案 继承好比说你对父类的代码进行了二次的封装, 类似于将父类的代码copy到自己的代码中,所以是实际存在父类的属性和方法! 解决方案二: java中子类继承了父类的哪些成员Java 中子类继承父类,执行顺序python中单继承和多继承中子类默认继承父类的哪个构造函数__init__

详解Java继承中属性、方法和对象的关系_java

大家都知道子类继承父类是类型的继承,包括属性和方法!如果子类和父类中的方法签名相同就叫覆盖!如果子类和父类的属性相同,父类就会隐藏自己的属性! 但是如果我用父类和子类所创建的引用指向子类所创建的对象,父类引用所调用子类对象中的属性值或方法的结果是什么呢? 看代码: public class FieldDemo { public static void main(String[] args){ Student t = new Student("Jack"); Person p = t;/

java网络传递对象时该对象继承父类的属性在网络接收端接收该属性值总是null,why?

问题描述 java网络传递对象时该对象继承父类的属性在网络接收端接收该属性值总是null,why? //=========================== 情形一: ===============================//在网络上传递User1类对象时info属性值在网络的另一端能够接收到! public class User1 implements Serializable { public String info = null; public String userName =

屏蔽.NET自定义开发组件中的属性

今天看见一个网友的留言:有一个问题请教一下兄台,对于继承自microsoft的.net framework中现有的组件,怎么将一些属性屏蔽掉,就是新的组件不提供继承来的属性,比如继承Panel新编写EPanel,对于panel的属性的BackColor怎么屏蔽掉?? 这个问题解决方法如下: 第一步:在你的控件类中定义设计时中提供服务的类[Designer(typeof (MSPlus.Web.UI.Design.WebControls.ButtonDesigner))] [Description

Java语言入门教程(十三):Java语言中继承中的构造方法问题

教程(十一)中,了解了Java语言中继承的基本概念.Java中类与类的继承 ,是单继承,主要目的是复用.子类对象可以复用父类中权限允许的属性和方法 ,所以子类的构造方法和父类的构造方法之间,有一定的调用关系,本文中将进 行详细介绍. 首先,需要记住一个事实:子类的任何一个构造方法,都将先调用父类某个 构造方法.如子类Trainer中的构造方法: public Trainer() { } 虽然这个构造方法的方法体中什么代码也没有写,但是也调用了父类 Employee的构造方法,默认调用的是Empl

java 继承-一个java继承中碰到的菜鸟问题

问题描述 一个java继承中碰到的菜鸟问题 public class Parent { public String a; public String b; public Parent getA(){ System.out.println("PPPPPPPPP"); return this; } public void Test(){ System.out.println(getA().a); System.out.println(getA().b); } } public class

java 类-Java 类中的属性存储问题

问题描述 Java 类中的属性存储问题 Java中的方法存储在全局代码区之中,那么类中的属性存储在哪里呢?(父子类中同名的方法会被辅写,但是同名的属性却毫无影响?) 解决方案 父类属性可以继承,但不可以覆盖的.java中属性及类的定义信息都会被放在方法区中 解决方案二: Java中的存储问题关于java中的存储问题java继承 父类子类方法调用问题 属性和静态方法是没有多态的 解决方案三: java中的变量存在栈中 解决方案四: 变量和属性都是存储在栈中,,对象都是存储在堆中所以对象的属性重名是

VC++在对话框中加入属性页

当一个基于对话框的程序中有相当多的控件时,你一定会想到使用属性页来将这些控件分类放置.本文针对这种方法来讨论几种可能实现的方案. 方案一本方案的例子请见源代码打包文件中的Property1部分 在对话框上放置一个Tab Control的控件,再在对话框上放置所需的控件(本例放置了2个按钮,试图在每个标签中显示一个).然后利用Class Wizard来为Tab Control控件创建一个控件变量,该变量是CTabCtrl类的,再为其他控件也创建相应的控件类. 在主对话框的初始函数中CPropert