java 一个类继承另一个类 强转成继承的类 会沿用几个函数
时间: 2023-08-18 16:04:20 浏览: 40
当一个类继承另一个类并进行强制类型转换,只有继承的类中的成员函数会被沿用。强制类型转换只是将子类的对象引用转换为父类的对象引用,但实际上对象本身并没有改变,仍然保留子类的所有成员。
所以,在强制类型转换后,你可以使用父类的引用调用继承类中的函数,但是无法直接调用继承类特有的函数或成员变量。如果你需要访问继承类特有的函数或成员变量,你可以再次将父类引用转换回子类引用。
需要注意的是,如果在强制类型转换过程中,将父类引用指向了一个与父类无关的其他子类对象,那么调用可能会导致运行时异常。因此,在进行强制类型转换时,应该确保对象的类型是兼容的,否则应该使用`instanceof`关键字进行类型检查。
相关问题
java 一个类继承另一个类 强转成继承的类 会沿用谁的函数
当一个类继承另一个类并且进行强制类型转换时,会沿用继承的类的函数。强制类型转换是将一个对象从一个类的类型转换为另一个类的类型,但实际上对象的实际类型并没有改变,只是被视为继承类的类型。
例如,如果有一个类A和一个类B,B继承自A。当你创建一个B类的对象并将其强制类型转换为A类时,你可以调用A类中定义的函数,但是不能调用B类特有的函数。
以下是一个示例代码:
```java
class A {
public void methodA() {
System.out.println("调用了A类的方法");
}
}
class B extends A {
public void methodB() {
System.out.println("调用了B类的方法");
}
}
public class Main {
public static void main(String[] args) {
B b = new B();
b.methodA(); // 调用了A类的方法
A a = (A)b; // 强制类型转换
a.methodA(); // 调用了A类的方法
// a.methodB(); // 错误,无法调用B类特有的方法
}
}
```
在上面的例子中,我们创建了一个B类的对象b,并调用了它继承的A类的方法methodA。然后,我们将b对象强制类型转换为A类并赋值给a。最后,我们可以通过a对象调用A类的方法methodA,但无法调用B类特有的方法methodB。
因此,强制类型转换后,对象的函数调用仍然遵循继承类的函数。
qt 怎么让自定义的控件无法被拖动,这个控件继承于qwidget
要让继承自 QWidget 的自定义控件无法被拖动,你可以通过重写控件的 mousePressEvent() 函数来实现。在该函数中,你可以判断用户是否按下了鼠标左键,如果是,则将 QMouseEvent 的 accept() 函数设为 true,从而阻止控件的拖动。具体的实现代码如下所示:
```cpp
void MyWidget::mousePressEvent(QMouseEvent *event)
{
if (event->button() == Qt::LeftButton)
{
event->accept();
}
else
{
QWidget::mousePressEvent(event);
}
}
```
在这个例子中,我们只阻止了鼠标左键的拖动操作,而对于其他行为则不做任何处理,依然沿用 QWidget 的默认行为。如果你需要阻止其他行为的拖动,可以在条件语句中添加相应的判断条件。