java接口和类有啥区别?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java接口和类有啥区别?相关的知识,希望对你有一定的参考价值。
接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。
接口无法被实例化,但是可以被实现。一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。另外,在 Java 中,接口类型可用来声明一个变量,他们可以成为一个空指针,或是被绑定在一个以此接口实现的对象。
接口与类的区别:
接口不能用于实例化对象。
接口没有构造方法。
接口中所有的方法必须是抽象方法。
接口不能包含成员变量,除了 static 和 final 变量。
接口不是被类继承了,而是要被类实现。
接口支持多继承。 参考技术A 接口与类的的最主要的两点区别
1.接口只能定义方法,不能实现方法,而且方法默认是public,类通常是来实现接口中的方法。
2.接口不能实例对象,类可以实例对象。本回答被提问者采纳 参考技术B 接口的特点:
1.接口不包含方法的任何实现,接口中的方法都是没有方法实体的抽象方法。接口只能定义一组操作,不能实现这些操作。
2.接口定义的方法和域都是具备public访问权限的,即使没有使用public访问控制符,接口中的方法和域也不能使用protected或者private进行修饰。
3.接口里面定义的域必须是静态或拥有final控制符。
4.接口不能直接用来创建对象,因此接口不包含构造方法的定义。 参考技术C 接口只有方法
没有属性(即使有也必须是FINAL的)是无状态的
类是属性和方法的集合
是有状态的 参考技术D 楼上的回答写得很好!因为接口默认属性是static
final的,所以老版的Java也常用来做现在的的enum枚举做的事情。
命名空间和类有啥区别? [关闭]
【中文标题】命名空间和类有啥区别? [关闭]【英文标题】:What's the difference between namespaces & classes? [closed]命名空间和类有什么区别? [关闭] 【发布时间】:2014-09-18 13:12:05 【问题描述】:在C++13/4环境下,命名空间和类有什么区别?
我的看法;
namespace foo
int a : 4;
int b : 4;
和
class bar
public:
int a = 0;
int b = 0;
是一样的……
是的,它们的访问方式不同;
命名空间....
foo::a=20;
foo::b=30;
类....
bar alpha;
alpha.a ...
alpha.b ...
但总的来说,一个比另一个有什么优势?
【问题讨论】:
类应该用于抽象、封装和/或 OOP。命名空间应该用于分组。 去任何地方寻找答案。您不需要自定义答案。 您的第一个代码甚至无效。 一个更好的问题是,“使用静态类成员与在命名空间范围内使用变量的优缺点是什么?” WTF 是 C++13??? 【参考方案1】:命名空间允许您将实体分组为具有本地范围而不是全局范围。这在标准库中很常见,例如std
。
名称的示例组可能是cout
和cin
等流。
不使用命名空间,你必须定义命名空间范围std
。
std::cout << "Hello, world!";
使用命名空间,您已经显示了一次范围,不再需要再次声明它。
using namespace std;
cout << "Hello, world!";
但是,在后一种情况下,您不能使用另一个名为 cout
的变量,该变量是用户定义的或包含在另一个库中。
【讨论】:
答案有点不对劲,至少对我来说是这样。它总是使用命名空间。无论您做什么,cout
都存在于 std
中。 using namespace std;
还使 cout
在它使用的范围内可用,您可能暗示它是全局范围。之后仍然可以通过std::cout
访问它。一旦您将cout
从std
提升到该语句所在的任何范围内,您仍然可以拥有另一个cout
,只要它也不在该范围内。例如,库使用自己的命名空间,或者如果这是在函数中,则放入像 int cout;
这样的块。
明确地说,我可以说'通过声明命名空间,您已经显示了一次范围,不再需要再次声明它。我应该说声明范围而不是定义它。显然 cout 存在于 std 中 - 我的回答同意这一点。【参考方案2】:
有很多不同之处。命名空间是名称的分组机制,仅此而已。另一方面,类:
是类型。 可以实例化。 可以派生自。 可以有公共、受保护和私有成员。 可以有虚函数。等等。
如果您发现自己想知道应该使用命名空间还是类,那么您可能只是在寻找一种控制名称范围的方法——所以选择很明确:使用命名空间。
【讨论】:
以上是关于java接口和类有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章