这个问题是在一次面试中问我的,面试官让我用java写一个简单的Hello World程序。这是我写的代码。
class Greeting
{
public static void main(String[] args)
{
System.out.print("Hello World!");
}
}
然后有人问我这段代码实现了哪些 OOP 概念。我认为它使用继承,因为默认情况下每个 java 类都会扩展 Object 类。但想知道这里是否使用了其他 OOP 概念,如果是,那么如何使用?
可见性修饰符不是 OOP。唯一的 OOP 问题是它是 Java,并且您已经使用静态方法创建了一个类结构。
从技术上讲,您是正确的,所有未显式扩展任何内容的对象都隐式扩展了 Object 类。
class Greeting // class
{
public static void main(String[] args) // method (default entry)
{
System.out.print("Hello World!");
}
}
它与 C(命令式语言)没有太大区别,唯一的区别是类封装包装器。
#include<stdio.h>
main() { // function (default entry)
printf("Hello World!");
}
我认为这里使用了多态和继承这两个oops概念。因为对象类是每个类的父类。
经典的:
永远不要使用这个:
class Greeting
{
public static void main(String[] args)
{
System.out.print("Hello World!");
}
}
始终使用这个:
class Greeting
{
public static void main(String[] args)
{
new Greeting().hi();
}
private void hi(){
System.out.print("Hello World!");
}
}
这是简单的答案:-)但是,在你的代码中你应该使用静态上下文。
如果你实现了这样的东西,你可能有更多机会解释 OOP 概念。
public abstract class Greeting
{
public abstract String getHelloWorldMessage();
}
public class EnglishGreeting extends Greeting
{
private final String HELLO_WORLD_MESSAGE = "Hello World!";
public String getHelloWorldMessage() {
return HELLO_WORLD_MESSAGE;
}
}
public class SpanishGreeting extends Greeting
{
private final String HELLO_WORLD_MESSAGE = "¡Hola Mundo!";
public String getHelloWorldMessage() {
return HELLO_WORLD_MESSAGE;
}
}
public class Main
{
public static void main(String[] args) {
Greeting englishGreeting = new EnglishGreeting();
Greeting spanishGreeting = new SpanishGreeting();
System.out.print(englishGreeting.getHelloWorldMessage());
System.out.print(spanishGreeting.getHelloWorldMessage());
}
}