继承不在一个包能继承默认的方法吗
时间: 2024-06-09 10:05:07 浏览: 6
在Java中,如果两个类不在同一个包中,子类是不能继承父类的默认方法的。因为默认方法是在接口中定义的,而接口中的默认方法默认是使用public访问修饰符修饰的,所以默认方法在接口中被视为公共方法,而公共方法在Java中只能被同一个包中的其他类或者外部类访问。因此,如果子类和父类不在同一个包中,子类是无法访问父类的默认方法的,更别说继承了。如果想要实现跨包继承默认方法,可以将接口中的默认方法改为抽象方法,然后在父类中实现该抽象方法。子类就可以继承父类中的实现了。
相关问题
带参构造方法不能被子类继承么
带参构造方法可以被子类继承,但是需要注意一些细节。
当子类继承父类时,如果父类中存在带参构造方法,那么子类在实例化时必须调用父类的带参构造方法来初始化父类的成员变量。这种情况下,如果子类中没有显式地定义构造方法,那么编译器会默认生成一个无参的构造方法。但是,如果子类中显式地定义了构造方法(无论是带参还是不带参),那么编译器不会再生成默认的构造方法,此时如果需要调用父类的带参构造方法,就需要在子类的构造方法中使用super关键字调用父类的带参构造方法。
因此,虽然带参构造方法可以被子类继承,但是需要在子类中手动调用父类的带参构造方法进行初始化,否则父类的成员变量将无法正确初始化。
如果子类和父类不在同一个包中子类不继承父类的友好成员
是的,你说得对。在Java中,如果子类和父类不在同一个包中,子类无法继承父类的友好成员(默认访问修饰符所修饰的成员)。友好成员只能在同一个包中访问,如果不在同一个包中,则无法访问。因此,子类也无法从父类中继承友好成员。
需要注意的是,子类仍然可以继承父类的公共成员和受保护成员。公共成员可以在任何地方被访问,受保护成员可以在同一包中以及子类中被访问。但是,友好成员只能在同一个包中被访问,所以子类无法继承父类的友好成员。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)