抽象类一定有抽象方法吗 必须实现继承的抽象方法?

[更新]
·
·
分类:互联网
4617 阅读

抽象类一定有抽象方法吗

必须实现继承的抽象方法?

必须实现继承的抽象方法?

包含抽象方法的类称为抽象类,但并不意味着抽象类中只能有抽象方法,它和普通类一样,同样可以拥有成员变量和普通的成员方法。注意,抽象类和普通类的主要有三点区别:  
1)抽象方法必须为public或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),缺省情况下默认为public。  
2)抽象类不能用来创建对象;  
3)如果一个类继承于一个抽象类,则子类必须实现父类的抽象方法。如果子类没有实现父类的抽象方法,则必须将子类也定义为为abstract类。

java中,一个类实现某个接口,必须重写接口中的所有方法吗?

只能讲不是必须的,因为要考虑到抽象类。
一个类如果是非抽象类也就是普通类的话实现某个接口,确实要重写此接口中所有的方法;
但是一个类如果是抽象类,抽象类实现某个接口,可以不实现此接口中定义的所有方法,可以由它的子类实现。

sv中动态函数与静态函数的区别?

静态函数只有当程序结束的时候才从内存消失。静态成员函数不需要类实例化就能调用的
而非静态则是动态加载到内存,不需要的时候就从内存消失。抽象类里面有抽象方法和和非抽象方法,抽象方法不能有方法体,抽象类不能被实例化,其子类必须实现其抽象方法,
接口里面只能有方法定义,不能有方法体

Java集合类库的顶层里的Collection,List,Set是抽象类的话是否更“正确”一些?

回答此问题前,先上Java的容器架构图:
看了上述架构后,应该不会再问上述问题了。如果还会问的话,再展开一二:
1. Java中接口和抽象类的区别?
2. 接口和抽象类如何选择?
3. 针对接口而非对象编程!
1. Java中接口和抽象类的区别?接口
1. 因为java不支持多重继承,所以有了接口,一个类只能继承一个父类,但可以实现多个接口,接口本身也可以继承多个接口。
2. 接口里面的成员变量默认都是public static final类型的。必须被显示的初始化。
3. 接口里面的方法默认都是public abstract类型的。隐式声明。
4. 接口没有构造方法,不能被实例化。
5. 接口不能实现另一个接口,但可以继承多个接口。
6. 类如果实现了一个接口,那么必须实现接口里面的所有抽象方法,否则类要被定义为抽象类。
抽象类
1. 如果将一个类声明为abstract,此类不能生成对象,只能被继承使用。
2. 抽象方法必须存在于抽象类中。
3. 抽象类中可以有一般的变量和一般的方法。
4. 子类继承抽象类必须实现其中抽象方法,除非子类为抽象类。 private void print(){};此语句表示方法的空实现。 abstract void print(); 此语句表示方法的抽象,无实现。
接口和抽象类的区别:
抽象类只能继承一次,但是可以实现多个接口;接口和抽象类必须实现其中所有的方法,抽象类中如果有未实现的抽象方法,那么子类也需要定义为抽象类。抽象类中可以有非抽象的方法;接口中的变量必须用 public static final 修饰,并且需要给出初始值。所以实现类不能重新定义,也不能改变其值。接口中的方法默认是 public abstract,也只能是这个类型。不能是 static,接口中的方法也不允许子类覆写,抽象类中允许有static 的方法。接口和抽象类的核心一点,总结一句话:Java特有的接口机制突破了Java单继承的缺陷,使之拥有了C 一样的多继承功能。
2. 接口和抽象类如何选择?1. 如果预计要创建类的多个版本,则创建抽象类。抽象类提供简单的方法来控制类版本。
2. 如果创建的功能将在大范围的异类对象间使用,则使用接口。
3. 如果要设计小而简练的功能块,则使用接口。
4. 如果要设计大的功能单元,则使用抽象类。
5. 如果要向类的所有子类提供通用的已实现功能,则使用抽象
3 针对接口而非对象编程!如果上述接口改为抽象类来实现,除了架构问题,使用相关java容器时,如何实现针对接口编程?
篇幅有限,希望这个回答能帮到您。关注头条号,更多相关Java技术进阶干货文章免费分享。