继承 和static

转载 2015年07月10日 19:28:36

继承和多态

1。友元是不可以被继承的:基类的友元不可以访问派生类的成员;同样,一个友元的派生类也不可以访问定义友元的类。

2。除static成员外,每个派生类都保存了基类的一个副本,包括派生类不能访问的 private成员;static在整个继承层中只有一个,其访问属性跟其他成员一样。

3。虚函数在本质上是语义上的完备性表现:作为基类的成员却可以能被派生类重新定义;当然也正因为如此才有了多态。

4。派生类的声明不允许有继承列表。

5。继承是非自反的,也就是不能从自身继承。

6。Constructors and the copy-control members are not inherited,A class may initialize only its own immediate base class.

7。派生类如果自己定义了拷贝构造函数和赋值运算,则基类的部分不会自动激发,需要显示调用,如果派生类使用自定义的拷贝构造函数时没有显示调用基 类的拷贝构造函数,那么基类会使用自己的默认构造函数来对基类部分的成员赋值;而析构函数一直激发基类的析构函数,也就是说派生类没有必要对基类的成员进 行析构操作。
8。 一般不要override 非 virtual 成员函数,否则会产生二义性。(OOD)

9。一般不要overload virutal 函数因为virtual函数只有一个virtual参数表。 (OOD)

10。析构函数应该经常被定义为虚:我们使用一个基类的指针,显然是可以动态绑定的,如果在运行时指针指向基类的一个派生类,当使用这个指针析构派 生类时会发生什么呢?要析构首先要调用一个析构函数,根据多态的定义这个析构函数必须是基类基类部分的,因为虚函数不可以被继承,也因为我们需要对派生类 做自己的清楚操作,所以在基类中的这个析构函数必须是虚的,故必须在基类中定义虚析构函数。

static

1.关键字static,friend,explicit,virtual只能出现在类体中,inline即可以出现在类体内,也可以出现在类体外,只要有一个出现就是内联函数。

 (c++ primer)

A const static data member of integral type can be initialized within the class body as long as the initializer is a constant expression。

When a  const   static data member is initialized in the class body, the data member must still be defined outside the class definition。

When an initializer is provided inside the class, the definition of the member outside the class   must not specify an initial value。

 

非静态成员函数可以任意地访问静态成员函数和静态数据成员; 

 静态成员函数不能访问非静态成员函数和非静态数据成员.静态成员函数的参数没有this指针,也不可以是virtual函数。

说静态成员不能被继承,是因为子类跟父类共享一份静态成员,但子类使用正常方法仍然能够访问。

静态全局变量不能被其它文件所用;其它文件中可以定义相同名字的变量,不会发生冲突;

在函数的返回类型前加上static关键字,函数即被定义为静态函数。静态函数与普通函数不同,它只能在声明它的文件当中可见,不能被其它文件使用。其它文件中可以定义相同名字的函数,不会发生冲突。

C++变量作用域可分为6种:全局作用域,局部作用域,语句作用域,类作用域,命名空间作用域和文件作用域。

Java中子类是否可以继承父类的static变量和方法而呈现多态特性

静态方法通常,在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法,关于static方法,声明为static的方法有以下几条限制: 它们仅能调用其他的static 方法。 ...
  • u010412719
  • u010412719
  • 2015年10月19日 19:45
  • 4887

Java中的继承与静态static等的执行先后顺序的面试题

个人觉得相当不错,把java中类的初始化及子类、父类之间的初始化顺序,静态变量、静态方法的初始化都涵盖了,很不错的一道面试题 面试题目如下:请写出程序执行完成之后的结果。 Java代码   ...
  • u012914089
  • u012914089
  • 2014年05月19日 18:34
  • 1694

JAVA静态方法是否可以被继承?

结论:java中静态属性和静态方法可以被继承,但是没有被重写(overwrite)而是被隐藏. 原因: 1). 静态方法和属性是属于类的,调用的时候直接通过类名.方法名完成对,不需要继承机制及可以调用...
  • zhouhong1026
  • zhouhong1026
  • 2014年02月12日 13:05
  • 31065

Java静态属性和方法的继承问题

对Java静态属性和静态方法继承的一个总结。
  • LiuConey
  • LiuConey
  • 2016年06月01日 13:46
  • 1945

Java基础之子类会不会继承父类的static变量和static方法

1 相关问题 (1)应用父类静态字段会不会初始化子类? (2)父类的静态方法能不能被子类重写? (3)父类的静态变量被继承后,子类修改静态变量,为什么父类的也跟着变了? 2 解决思路-不能 ...
  • chenliguan
  • chenliguan
  • 2017年04月07日 22:13
  • 2115

java中继承和static等 的执行顺序

(一)java 静态代码块 静态方法区别 一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下,其他...
  • paul342
  • paul342
  • 2015年09月29日 16:26
  • 958

java的单例、static修饰符及static的继承

单例设计模型: Singleton模式开发:Static通常用于,单例设计,静态只有一份,并且常驻内存。 Singleton是一种设计模式,高于语法,可以保证一个类在整个系统中仅有一个对象。 待续!...
  • typa01_kk
  • typa01_kk
  • 2015年05月03日 22:46
  • 1008

java 继承、抽象、private、static、final关键字在类中的使用

为了保证不让他人创建类对象,可以将构造函数私有化! 4.1 继承的描述 通过extends关键字让类与类之间产生继承关系。 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类...
  • xionw
  • xionw
  • 2016年01月04日 14:23
  • 441

C#继承接口的类和派生接口的实现

接口语法上与声明抽象类完全相同,但是不允许提供接口中任何成员的实现方式。一般情况只能包含方法,属性,索引器,和事件声明,不能实例化。 实现接口:接口表示成员的存在性,类负责确定这些方法的实现代码,...
  • flysh05
  • flysh05
  • 2015年07月10日 23:23
  • 339

继承 和static

继承和多态 1。友元是不可以被继承的:基类的友元不可以访问派生类的成员;同样,一个友元的派生类也不可以访问定义友元的类。 2。除static成员外,每个派生类都保存了基类的一个副本,包括派...
  • BruceBaoZhiqiang
  • BruceBaoZhiqiang
  • 2014年08月27日 17:33
  • 346
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:继承 和static
举报原因:
原因补充:

(最多只允许输入30个字)