精华内容
下载资源
问答
  • 继承直接基类与间接基类规则

    千次阅读 2019-12-05 11:26:37
    (1)继承直接基类与间接基类规则如下: 在声明派生时,只需要列出它的直接基类 派生沿着的层次自动向上继承它的间接基类 (2) 派生的成员包括: 派生自己定义的成员 直接基类中的所有成员 所有间接...

    1、C++中继承可以是多层次的
    (1)类继承直接基类与间接基类规则如下:

    • 在声明派生类时,只需要列出它的直接基类
    • 派生类沿着类的层次自动向上继承它的间接基类

    (2) 派生类的成员包括:

    • 派生类自己定义的成员

    • 直接基类中的所有成员

    • 所有间接基类的全部成员

    2、举栗子

    class MoreDerived:public Derived {
    public:
    	MoreDerived():Derived(4) {
    		cout << "More Derived constructed" << endl;
    	}
    	~MoreDerived() {
    		cout << "More Derived destructed" << endl;
    	}
    };
    int main()
    {
    	MoreDerived Obj;
    	return 0;
    }
    /*输出结果:
    Base 4 constructed
    Derived constructed
    More Derived constructed
    More Derived destructed
    Derived destructed
    Base 4 destructed
    */
    
    展开全文
  • 抽象无法直接实例化,它的实例化方式并不是通过普通的new方式来创建对象,而是通过父类的应用来指向子类的实例间接地实现父类的...下面将通过一个简单的Demo来展示一下:首先,定义一个抽象B,包含抽象方法pl...

    抽象类无法直接实例化,

    它的实例化方式并不是通过普通的new方式来创建对象,而是通过父类的应用来指向子类的实例间接地实现父类的实例化,因为子类在实例化之前,一定会先实例化它的父类。这样创建了继承抽象类的子类对象,也就把其父类(抽象类)给实例化了。

    注意:接口与抽象类非常类似,但是它不可以被实例化,因为接口压根没有构造函数。

    下面将通过一个简单的Demo来展示一下:

    首先,定义一个抽象类B,包含抽象方法play()


    public abstract class B {
    	private String str;
    	
    	public B(String a){
    		System.out.println("父类已经实例化");
    		this.str = a;
    		System.out.println(str);
    	}
    	
    	public abstract void play();
    }

    然后,定义一个子类C去继承类B,并实现其中的抽象方法

    public class C extends B{
    	public C(String c){
    		super(c);
    		System.out.println("子类已经被实例化");
    	}
    
    	@Override
    	public void play() {
    		System.out.println("我实现了父类的方法");
    	}
    	
    	public static void main(String[] args){
    		B c = new C("c");
    	}
    }
    
    
    运行结果如下:

    父类已经实例化
    c
    子类已经被实例化


    转载参考:https://blog.csdn.net/when_less_is_more/article/details/78004363

    展开全文
  • //静态方法不能直接调用实例方法和变量,但可以间接调用(即在静态方法中创建的实例,然后调用) class Demo_12 { public static void main(String[] args) { Circle c=new Circle(); Demo_12 d=new Demo_12(); ...
    package com.text_3;
    //静态方法不能直接调用实例方法和变量,但可以间接调用(即在静态方法中创建类的实例,然后调用)
    class Demo_12 {
    public static void main(String[] args) {
    Circle c=new Circle();
    Demo_12 d=new Demo_12();
    method1();//此处报错,静态方法不能直接调用非静态方法
    d.method1();   //间接调用,无错
    c.setRadius(5.0);  //间接调用,无错
    }
    public void method1(){
    method2();
    }
    public static void method2(){
    Circle c=new Circle();
    System.out.println("what is radius " +c.getRadius());
    }
    }
    class Circle{
    private double radius;
    public double getRadius() {
    return radius;
    }
    public void setRadius(double radius) {
    this.radius = radius;
    }
    }
    展开全文
  • 立即寻址,直接寻址,间接寻址

    千次阅读 2018-06-22 14:36:29
    直接寻址就是指令中存放的是地址,直接解析这地址;间接寻址就只指令中存放的是地址的地址,或者是存放地址的寄存器,最慢。总共有1416位寄存器,88位寄存器 通用寄存器: 数据寄存器: AH(8位) AL(8位) AX(16...

    立即寻址就是指令当中自带数据,直接读取,最快;
    直接寻址就是指令中存放的是地址,直接解析这个地址;
    间接寻址就只指令中存放的是地址的地址,或者是存放地址的寄存器,最慢。




    总共有14个16位寄存器,8个8位寄存器

     

    通用寄存器:

      数据寄存器:

      AH(8位)  AL(8位)  AX(16位)   (AX和AL又称累加器)

      BH(8位)  BL(8位)  BX(16位)   (BX又称基址寄存器,唯一作为存储器指针使用寄存器)  

      CH(8位)  CL(8位)  CX(16位)   (CX用于字符串操作,控制循环的次数,CL用于移位)

      DH(8位)  DL(8位)  DX(16位)   (DX一般用来做32位的乘除法时存放被除数或者保留余数)

     

      指针寄存器:

      SP 堆栈指针 (存放栈顶地址)

      BP 基址指针 (存放堆栈基址偏移)

     

      变址寄存器:主要用于存放某个存储单元地址的偏移,或某组存储单元开始地址的偏移,

      即作为存储器(短)指针使用。作为通用寄存器,它们可以保存16位算术逻辑运算中的操

      作数和运算结果,有时运算结果就是需要的存储单元地址的偏移.

     

      SI 源地址  (源变址寄存器)

      DI 目的地址 (目的变址寄存器)

      

    控制寄存器:

      IP 指令指针

      FLAG 标志寄存器

       ① 进位标志 CF,记录运算时最高有效位产生的进位值。

     ② 符号标志 SF,记录运算结果的符号。结果为负时置1,否则置0。

     ③ 零标志  ZF,运算结果为0时ZF位置1,否则置0。

     ④ 溢出标志 OF,在运算过程中,如操作数超出了机器可表示数的范围称为溢出。溢出时OF位置1,否则置0。

     ⑤ 辅助进位标志 AF,记录运算时第3位(半个字节)产生的进位值。

     ⑥ 奇偶标志 PF,用来为机器中传送信息时可能产生的代码出错情况提供检验条件。当结果操作数中1的个数为偶数时置1,否则置0。

     

    段寄存器

      CS 代码段  IP

      DS 数据段  

      SS 堆栈段  SP BP

      ES 附加段

     

    七种寻址方式:

    1、立即寻址方式:

    操作数就包含在指令中。作为指令的一部分,跟在操作码后存放在代码段。

    这种操作数成为立即数。立即数可以是8位的,也可以是16位的。

    例如:

        指令: MOV AX,1234H

          则: AX = 1234H

     

    2、寄存器寻址方式:

    操作数在CPU内部的寄存器中,指令指定寄存器号。

    对于16位操作数,寄存器可以是:AX、BX、CX、DX、SI、DI、SP和BP等。

    对于8位操作数,寄存器可以是AL 、AH、BL、BH、CL、CH、DL、DH。

    这种寻址方式由于操作数就在寄存器中,不需要访问存储器来取得操作数

    因而可以取得较高的运算数度。

     

    3、直接寻址方式:

    操作数在寄存器中,指令直接包含有操作数的有效地址(偏移地址)

    注:操作数一般存放在数据段

    所以操作数的地址由DS加上指令中直接给出的16位偏移得到。如果采用

    段超越前缀,则操作数也可含在数据段外的其他段中。

    例如:

    MOV AX,[8054]

    如(DS) = 2000H,

    则执行结果为(AX) = 3050H

    (物理地址=20000+8054=28054H)

    28054H里的内容为3050H

     

    在汇编语言指令中,可以用符号地址代替数值地址

    如:MOV AX,VALUE

    此时VALUE为存放操作数单元的符号地址。

    如写成:MOV AX,[VALUE]也是可以的,两者是等效的。

    如VALUE在附加段中,则应指定段超越前缀如下:

    MOV AX,ES:VALUE 或 MOV AX,ES:[VALUE]

     

    4、寄存器间接寻址方式:

    操作数在寄存器中,操作数有效地址在SI、DI、BX、BP

    这四个寄存器之一中。在一般情况下,如果有效地址在

    SI、DI和BX中,则以DS段寄存器中的内容为段值。如果

    有效地址在BP中,则以SS段寄存器中的内容为段值

    例如:

    MOV AX,[SI]

    如果(DS) = 5000H (SI) = 1234H

    则物理地址 =  50000 + 1234 = 51234H

    51234H地址中的内容为:6789H

    执行该指令后,(AX) = 6789H

     

    5、寄存器相对寻址方式:

    操作数在存储器中,操作数的有效地址是一个基址寄存器(BX、BP)

    或变址寄存器(SI、DI)的内容加上指令中给定的8位或16位位移量之和

     

        BX  8位 位移量

    EA(有效地址) =  BP  + 

        SI  16位 位移量

        DI

    在一般情况下,如果SI、DI、或BX中的内容作为有效地址的一部分,那么

    引用的段寄存器是DS;如果BP中的内容作为有效地址的一部分,那么引用的

    段寄存器是SS。

     

    物理地址 = 16d × (DS) + (BX) + 8

               或(SI)或16位位移量

               或(DI)

    物理地址 = 16d × (SS) + (BP) + 8位位移量

                           或16位位移量

    在指令中给定的8位或16位位移量采用补码形式表示。在计算有效地址时,如

    位移量是8位,则被带符号扩展成16位。

    例如:

    MOV AX,[DI+1223H]

    假设,(DS) = 5000H,(DI) = 3678H

    则物理地址 = 50000 + 3678 + 1233 = 5489BH

    5489BH地址中的内容:55AAH

    执行该指令后AX = 55AAH

    下面指令中,源操作数采用寄存器相对寻址,引用的段寄存器是SS: MOV BX,[BP-4]

    下面指令中,目的操作数采用寄存器相对寻址,引用的段寄存器是ES: MOV ES:[BX+5],AL

    指令:MOV AX,[SI+3]与MOV AX,3[SI]是等价的

     

    6、基址加变址寻址方式:

    操作数在寄存器中,操作数的有效地址由:

    基址寄存器之一的内容与变址寄存器之一的内容相加

       BX   SI

    即: EA =    + 

       BP   DI

    在一般情况下,如果BP之内容作为有效地址的一部分,则以SS之内容为段值,否则已DS

    为段值。

    例如:

    MOV AX,[BX][DI]

    如:(DS)=2100H,

       (BX)=0158H,

       (DI)=10A5H

    则EA=0158 + 10A5 = 11FD

    物理地址=21000 + 11FD = 221FDH

    221FDH地址中的内容:1234H

    执行该指令后AX = 1234H

     

    下面指令中,目的操作数采用基址加变址寻址,

    引用的段寄存器是DS: MOV DS:[BP+SI],AL

     

    下面指令中,源操作数采用基址加变址寻址,

    引用的段寄存器ES: MOV AX,ES:[BX+SI]

     

    这种寻址方式使用与数组或表格处理。用基址寄存器存放数组首地址,而用变地寄存器

    来定位数组中的各元素,或反之。由于两个寄存器都可改变,所以能更加灵活地访问数

    组或表格中的元素。

    下面的两种表示方法是等价的:

    MOV AX,[BX+DI]

    MOV AX,[DI][BX]

     

    7、相对基址加变址寻址方式:

    操作数在存储器中,操作数的有效地址由于基址寄存器之一的内容与变址寄存器之一的

    内容及指令中给定的8位或16位位移量相加得到。

             BX    SI    8位

    即: EA =     +     +      位移量

       BP    DI    16位

    在一般情况下,如果BP中的内容作为有效地址的一部分,则以SS段寄存器中的内容为段

    值,否则以DS段寄存器中的内容为段值。

    在指令中给定的8位或16位位移量采用补码形式表示。

    在计算有效地址时,如果位移量是8位,那么被带符号扩展成16位。

    当所得的有效地址操作FFFFH时,就取其64K的模

    例如:

    MOV AX,[BX+DI-2]

    假设,(DS) = 5000H, (BX) = 1223H, DI = 54H, (51275) = 54H, (51276) = 76H

    物理地址= 50000 + 1223 + 0054 + FFFE(-2 各位取反末位加一) = 51275H

    执行该指令后 (AX) = 7654H

     

    相对基址加变址这种寻址方式的表示方法多种多样,以下四种方法均是等价的:

    MOV AX,[BX+DI+1234H], MOV AX,1234H[BX][DI]

    MOV AX 1234H[BX+DI],  MOV AX,1234H[DI][BX]


    转自:https://blog.csdn.net/skyxmstar/article/details/70039520


    展开全文
  • python 直接访问的私有属性方法

    千次阅读 2017-11-11 19:29:50
    # 内容:直接访问的私有属性或者方法 # # 环境:py 3.6.2 # 1 - 访问的私有属性或者方法....首先我们定义一个包含私有属性的, class Private(): def __init__(self): self.__private = 521实例化并尝试访问_
  • 【软考】解析直接地址索引和间接地址索引

    万次阅读 多人点赞 2015-11-06 09:30:28
     间接地址索引:它有几分类,间接地址索引、二级间接地址索引、三级间接地址索引……,它的变现形式就是根据具体有几次间接索引来命名的。 2010年下半年真题: 27-28;某文件系统采用多级索引结构,若磁盘...
  • java中定义一个类可以同时继承两个  分享| 2013-09-18 17:12yfjmhe | 浏览 19117 次  继承 这句话对还是错?为什么? 专业回答 DM19890110 2013-09-18 17:58 这句话要看怎么理解...
  • 一个Maven工程添加了对某个jar包的依赖后,这个被依赖的jar包可以对应下面几个可选的范围: (1)compile [1]main目录下的Java代码可以访问这个范围的依赖 [2]test目录下的Java代码可以访问这个范围的依赖 [3]...
  • (1)分组在网络层的交付以及直接交付和间接交付的区别 (2)分组在网络层的转发以及基于目的地址和基于标记的转发之间的区别 (3)不同的转发技巧: 1下跳法 2 特定网络法 3特定主机法 4默认方法 (4) 分类编址...
  • 目录 基本概念 代码与实例 基本概念 ECMA-Script ES5 ... 1.... 2. 这与在浏览器里面额JavaScript不同。 3. 没有提供DOM相关的API 4. ES5提供了对内访问类型,如Object,Array,Ma...
  • 可以抽象地把信箱看成一个对象,进程可以把消息放置其中也能从中取走。每个信箱都有一个唯一的标识符。在这种方式下,进程可以通过不同的信箱与其他进程通信。两个进程只有共享一个信箱才可以进行通信 ...
  • 抽象类可以继承实体吗?

    万次阅读 多人点赞 2012-07-18 00:57:14
    一道java 常见面试题,网上找到的几乎每 java 面试笔试题大全集锦里都能找到这道题。 题目如下: ...其实Object就是实体,java的API文档里,每抽象的条目里都明确写着直接或间接继承自
  • 拷贝构造函数里,可以直接访问另外一个同类对象(引用)的私有成员。 d. 的成员函数可以直接访问作为其参数的同类型对象的私有成员。 举例描述上述知识: 1).在拷贝构造函数中可以访问引用对象的私有变量:...
  • 在C++中,的对象建立分为两种,一种是静态建立,如A a;... 静态建立一个类对象,是由编译器为对象在栈空间中分配内存,是通过直接移动栈顶指针,挪出适当的空间,然后在这片内存空间上调用构造函
  • Java 查看枚举成员变量

    千次阅读 2018-11-01 22:08:15
    虽然 Java 枚举没有直接为我们提供这属性,但是我们还是可以间接获取: Java 枚举的成员方法 values 可以获取枚举中的所有变量,并作为数组返回。 此时我们就可以利用数组的长度来得知 Java 枚举中变量的...
  • 通过的实例访问其成员就用. 通过指向实例的指针来访问其成员就用-> 比TForm* pForm=new TForm(this); 这里pForm是一个指针,所以用->来访问其成员, pForm->... pt是一个类实例,所以用.来访问其成员 pt.x=34; pt
  • SVM多分类---多二值分类combine

    万次阅读 2014-11-18 21:17:05
    目前,构造SVM多分类器的方法主要有两:一直接法,直接在目标函数上进行修改,将多个分类面的参数求解合并到一个最优化问题中,通过求解该最优化问题“一次性”实现多分类。这种方法看似简单,但其计算...
  • 前篇见此: 操作系统清华大学版笔记(十) 信号量、管程...进程间通信死锁、死锁模型、死锁预防和恢复、银行家算法死锁:一组阻塞的进程(两个多个),持有一种资源,等待获取另一个进程所占有的资源,而导致谁都无
  • JVM入门第弹--加载子系统
  •  间接控制对象的交互是一个重要的编程思想,其实,利用间接思想的模式很多比如装饰模式、适配器模式、代理模式,都是通过第二个对象来与第一个对象交互实现功能。  这里主要介绍一下代理模式,
  • 【含答案】第三章 的重用--3.2-Object (1)单选题 关于Object,下面说法正确的是 A equals方法可以比较两对象的属性值是否相等 B 如果两对象同一,那么它们...在Java中,Object是所有直接或间接...
  • 这次的内容其实与上篇学习的内容正好是相对的,之前的各种通讯方式其实说的都是直接通讯,而这次我学习的内容是间接通讯,二者的本质区别在于间接通讯把时间和空间进行了分离,直接通讯在这2点上都进行了耦合,有点...
  • 分布式系统之四:间接通信

    千次阅读 2014-07-19 14:19:07
    本博文主要讲诉间接通信技术,包括...组通信:在组通信中,通信通过一个抽象的组进行,发送者不知道接收者的身份。 发布-订阅系统:代表一方法,这方法的共同特点是通过中介者将事件分发给多个接收者。 消息队列
  • 今天突然碰到一个郁闷问题 无法解析类型 java.lang.Object。必需的 .class 文件间接引用了它 (以前都么没见过!!) 解决方法: ... 对JRE系统库进行编辑,选择一个合适的JRE就可以了。 ...
  • XXXX.xx 必需的 .class 文件间接引用了它 java 问题 无法解析类型 java.lang.CharSequence。必需的 .class 文件间接引用了它 这编译错误有几原因 1、jdk版本问题 要是...
  • 深入理解Java加载器(ClassLoader)

    万次阅读 多人点赞 2017-06-26 09:34:08
    符号引用就是一组符号来描述目标,可以是任何字面量,而直接引用就是直接指向目标的指针、相对偏移量或一个间接定位到目标的句柄。有类或接口的解析,字段解析,方法解析,接口方法解析(这里涉及到字节码变量的...
  • 今天写代码竟然发现,private成员函数竟然可以的外部调用,开始以为是C++设计的缺陷。但是逐步深入才知道C++多态的博大精深。#include using namespace std; class Base { public: virtual void Func() { ...
  • 回答:匿名内部在实现时必须借助一个借口或者一个抽象或者一个普通来构造,这过层次上讲匿名内部是实现了接口或者继承了,但是不能通过extendsimplement关键词来继承类或实现接口。 匿名内部即...
  • maven无法下载间接依赖包

    千次阅读 2020-07-01 22:34:17
    A模块需要用到CD中的,通过B模块间接依赖了C和D。此时打包A的时候报错,大致意思是,无法编译使用CD中的。 给client模块打包,执行命令: mvn clean install 出现以下错误: Error:(8,52) java: 程序包...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 228,184
精华内容 91,273
关键字:

一个类可以从直接或间接