C++中基类里面定义的java 枚举 继承类型,可以被继承到子类中么

2503人阅读
基类和子类的之间的继承关系:
&-class SubClass:public SuperClass{...}
&-class Pig:public Animal{...}
子类可以继承所有基类的所有方法(即相关函数)和数据。
继承机制中的构造器里定义的& Animal(theName) &:
--当调用Pig()构造器时(以theName作为输入参数),
&& Animal()构造器也将被调用(theName输入参数将传递给它)。
--于是当我们调用Pig pig(“小猪猪”);
&& 将把字符串“小猪猪”传递给Pig()和Animal(),
&& 赋值动作将实际发生在Animal()方法里。
对象是类的一个实例(Instance).
如果将对象比作一个个房子,那么类就是房子的设计图纸。
或者类是一个模子,可以印出一个个甜甜圈。
ps:注意称谓
在C++中要定义的新的数据类型不仅拥有新定义的成员,而且还同时拥有旧的成员,
我们称已存在的用来派生新类的类为C++基类,又称为父类。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:195022次
积分:4152
积分:4152
排名:第5628名
原创:224篇
转载:13篇
(1)(1)(1)(1)(1)(1)(3)(2)(1)(2)(3)(3)(6)(4)(12)(5)(20)(11)(9)(19)(6)(22)(75)(33)(1)继承抽象类的非抽象类定义同名属性,不使用基类属性,怎么搞-c/c++-电脑编程网继承抽象类的非抽象类定义同名属性,不使用基类属性,怎么搞作者:flare216 和相关&&初学C#,不知道这一点跟其他语言有没有差别建了一个控制台做实验C# code
namespace ConsoleApplication3
{
public class AbstractClass
private string str = &abstract class&;
public void print()
System.Console.WriteLine(this.str);
}
}
namespace ConsoleApplication3
{
public class A:AbstractClass
public A()
str = &A&;
}
}
namespace ConsoleApplication3
{
public class B:AbstractClass
public B()
str = &B&;
}
}
namespace ConsoleApplication3
{
class Program
static void Main(string[] args)
AbstractClass foo = new A();
foo.print();
foo = new B();
foo.print();
}
}
输出的都是AbstractClass中定义的属性------回答---------------其他回答(10分)---------引用 2 楼 peter 的回复:pr更正...//加new好像不行这样:C# code
public abstract class Base
protected String str = &base&;
public void Show()
Console.WriteLine(str);
public class Dri : Base
public Dri()
str = &dri&;
static void Main(string[] args)
Base b = new Dri();
------其他回答(30分)---------public override int Id&
get {return _}&
set {_id =}&
}& “new”用于隐藏基类成员的继承成员------回答---------------其他回答(10分)---------引用 2 楼 peter 的回复:pr更正...//加new好像不行这样:C# code
public abstract class Base
protected String str = &base&;
public void Show()
Console.WriteLine(str);
public class Dri : Base
public Dri()
str = &dri&;
static void Main(string[] args)
Base b = new Dri();
------其他回答(30分)---------
public override int Id &
get {return _} &
set {_id =} &
}& “new”用于隐藏基类成员的继承成员
相关资料:|||||||继承抽象类的非抽象类定义同名属性,不使用基类属性,怎么搞来源网络,如有侵权请告知,即处理!编程Tags:                &                    说说Java中的枚举——定义枚举
10:12 4986人阅读
说了Joshua
Bloch大大提出的枚举模式,很好用但是好麻烦啊。如果你用过C/C++或是Pascal这样的语言的话一定会对它们的枚举类型有印象,例如在C/C++中我们可以这样定义:
enum weekday
然后在程序中就可以用MONDAY、TUESDAY这些变量了。这样多方便,但是Java
1.4以前的版本并没有提供枚举类型的支持,所以如果你是用JDK
1.4开发程序的话就只能像Joshua
Bloch老大那样写了。从Java
5.0(代号为Tiger)开始,这种情况改变了,Java从语言层面支持了枚举类型。
枚举是Tiger的一个很重要的新特性,它是一种新的类型,允许用常量来表示特定的数据片断,而且全部都以类型安全的形式来表示,它使用“enum”关键字来定义。
我们先来写一个简单的枚举类型的定义:
public enum
MONDAY, TUESDAY, WENSDAY, THURSDAY, FRIDAY;
//最后这个“;”可写可不写。
这和类、接口的定义很相像嘛!Tiger中的枚举类型就是一种使用特殊语法“enum”定义的类。所有的枚举类型是java.lang.Enum的子类。这是Tiger中新引入的一个类,它本身并不是枚举类型,但它定义了所有枚举类型所共有的行为,如下表:
注意:虽然所有的枚举类型都继承自java.lang.Enum,但是你不能绕过关键字“enum”而使用直接继承Enum的方式来定义枚举类型。编译器会提示错误来阻止你这么做。
WeekDay中定义的五个枚举常量之间使用“,”分割开来。这些常量默认都是“public static
final”的,所以你就不必再为它们加上“public static
final”修饰(编译器会提示出错),这也是为什么枚举常量采用大写字母来命名的原因。而且每一个常量都是枚举类型WeekDay的一个实例。你可以通过类似“WeekDay.MONDAY”这种格式来获取到WeekDay中定义的枚举常量,也可以采用类似“WeekDay
WeekDay.MONDAY”的方式为枚举类型变量赋值(你不能给枚举类型变量分配除了枚举常量和null以外的值,编译器会提示出错)。
作为枚举类型实例的枚举常量是如何初始化的呢?其实答案很简单,这些枚举常量都是通过Enum中定义的构造函数进行初始化的。
//java.lang.Enum中定义的构造函数,
//两个参数分别是定义的枚举常量名称以及它所在的次序。
Enum(String name, int ordinal) {
&&&&&&&&&&&&&&&&&&
this.name =
&&&&&&&&&&&&&&&&&&
this.ordinal =
在初始化的过程中,枚举常量的次序是按照声明的顺序安排的。第一个枚举常量的次序是0,依此累加。
枚举类型除了拥有Enum提供的方法以外,还存在着两个隐藏着的与具体枚举类型相关的静态方法——values()和valueOf(String
arg0)。方法values()可以获得包含所有枚举常量的数组;方法valueOf是java.lang.Enum中方法valueOf的简化版本,你可以通过它,根据传递的名称来得到当前枚举类型中匹配的枚举常量。
---------------------------------------------------------------------------------------------------&&&&
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。2007年6月 总版技术专家分月排行榜第三
2007年6月 VC/MFC大版内专家分月排行榜第一
本帖子已过去太久远了,不再提供回复功能。

我要回帖

更多关于 枚举可以继承吗 的文章

 

随机推荐