Java eclipse 写 Hellow World 和类继承与方法实练(一)

一、闲言

初读JAVA,从变量、数组、运算、逻辑、条件分支、到类,感觉与C#区别不大,但学了总归要练习的,于是下载并安装了Eclipse开发版和企业版,它们都是Open Source的。具体下载地址和安装方法,以及写第一个Hello World都可以在CSDN上找到,我主要填平实练中走过的Module-info.java的坑和铺平实练中前面类操作的路,如此便可以循序渐进地自我前行了。

二、碎语

下面是具体操练,尽量说细点儿,因为稍有个小坑不平,就很影响心情。

建新项目时,如红框所示的,既可选 Java Project又可选Project。原因很简单,Java project是Project集合里的一种,选了Project后会出现列表,在列表里依然可选 Java Project。

 

在Project中选Java Project 是这个样子的。然后,我们点Next,准备生成一个新项目。

然后,输入一个 MyJavaProg1项目名,其它默认,点Finish。

点选Finish之后,会弹出个建 module-info.java的会话框。它不是java程序,是MyJavaProg1这个项目模块的info文件。对于 Hello World这样的程序,可以点 Don't Create,但为了程序完整性我们还是点Create,Module name处就用默认的工程名。

Create后Eclipse的窗口变成如下这个样子,与Visual Studio IDE 相比面貌不太入眼。我们把Project Explorer窗口调出来,就多少有些像VS的资源管理器了。

调出Project Explore如下所示,在Windows中找Show View,然后 Project Explorer。

看看Project Explorer出来的样子吧。里面有两个项目,一个是原来创建的 Hello World, 一个是现在创建的 MyJavaProg1,它们同在一个工作区时,换句话说是在同一个文件夹下面。

接下来要为项目后续工作创建个工程包 package ,后续工作我们放在那里面完成。

点选上面的 package后,弹出会话框,我们输入包的名称,比如 net.csdn.mongnewer1。细看,Name下又出现 Create package-info.java,又是一个info文件。可以 Create, 也可以不 Create,它不是必须的。

点击Finish之后,在Explorer上出现包名。module-info.java 不用管它,我填了 requires java.base, exports net.csdn.mongnewer1,按 alt +/找不到建议的输出模板(我们的src中本来就没有)。

接下来要创建 Class, 将我们要建的 Class 建在net.csdn.mongnewer包里面。

弹出会话框,输入拟创建的类名 HiWorld 并勾选 public static void main,程序入口点就不用我们自己写了,它自动就填上了。

至此, 主程序框架就做好了,填上一句 System.out.println(“Hello World!”); 保存后即可运行,在Eclipse IDE中间底部出来 Hello World!

然后呢,我们加入其它类,继续实练我们的JAVA之路。下图是完整的 MyJavaProg1 界面。

类名是按书写的程序自动生成的,无需人为干预。下面是HiWorld.java的完整程序。

/**
 * 
 */
package net.csdn.mongnewer1;

import net.csdn.mongnewer1.ClassA;
import net.csdn.mongnewer1.ClassB;
import net.csdn.mongnewer1.ClassC;

/**
 * @author Administrator
 *
 */
public class HiWorld {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println("Hello World!\n");					//Output- Hello World!
		
		ClassA myA = new ClassA(); 
		ClassB myB = new ClassB();
		ClassC myC = new ClassC();
		System.out.println(myA.MystringA+"\n");					//Output- VarMystringA in ClassA
		
		System.out.println(myB.MystringA);						//Output- VarMystringA in ClassB
		myB.MethodInClassB();									//Output- A void Method in ClassB
		System.out.println(myB.MystringB+"\n");					//Output- VarMystringB in ClassB

		System.out.println(myC.MystringA);						//Output- VarMystringA in ClassC
		System.out.println(myC.MystringB);						//Output- VarMystringB in ClassC
		System.out.println(myC.MystringC+"\n");					//Output- VarMystringC in ClassC
		
		ClassA[] myClassArray = new ClassA[3];
		myClassArray[0]= new ClassA();
		myClassArray[1]= new ClassB();
		myClassArray[2]= new ClassC();
		System.out.println(myClassArray[0].MystringA);			//Output- VarMystringA in ClassA
		System.out.println(myClassArray[1].MystringA);			//Output- VarMystringA in ClassA
		System.out.println(myClassArray[2].MystringA);			//Output- VarMystringA in ClassA
	}

}

class ClassA{
	String MystringA = "Var MystringA in ClassA"; 
}

class ClassB extends ClassA {
	String MystringA = "Var MystringA in ClassB";
	String MystringB = "Var MystringB in ClassB";
	void MethodInClassB() {
		System.out.println("A void Method in ClassB");
	}
}

class ClassC extends ClassB{
	String MystringA = "Var MystringA in ClassC";
	String MystringB = "Var MystringB in ClassC";
	String MystringC = "Var MystringC in ClassC";
}

三、类的继承与super用法

把用到的Class再变化一些,加入继承、方法覆盖和调用父类中的方法。代码如下:

public class HiWorld {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println("Hello World!\n");					//Output- Hello World!
		
		ClassA myA = new ClassA(); 
		ClassB myB = new ClassB();
		ClassC myC = new ClassC();
		System.out.println(myA.MystringA+"\n");					//Output- VarMystringA in ClassA
		
		System.out.println(myB.MystringA);						//Output- VarMystringA in ClassB
		myB.MethodInClassB();									//Output- ClassB void Method in ClassB
		System.out.println(myB.MystringB+"\n");					//Output- VarMystringB in ClassB

		System.out.println(myC.MystringA);						//Output- VarMystringA in ClassC
		System.out.println(myC.MystringB);						//Output- VarMystringB in ClassC
		System.out.println(myC.MystringC+"\n");					//Output- VarMystringC in ClassC
		
		ClassA[] myClassArray = new ClassA[3];
		myClassArray[0]= new ClassA();
		myClassArray[1]= new ClassB();
		myClassArray[2]= new ClassC();
		System.out.println(myClassArray[0].MystringA);			//Output- VarMystringA in ClassA
		System.out.println(myClassArray[1].MystringA);			//Output- VarMystringA in ClassA
		System.out.println(myClassArray[2].MystringA+"\n");		//Output- VarMystringA in ClassA
		
		myClassArray[0].MethodInClassA();						//Output- ClassA void Method in ClassA
		myClassArray[1].MethodInClassA();						//Output- ClassA void Method in ClassB x 2
		myClassArray[2].MethodInClassA();						//Output- ClassA void Method in ClassC
		System.out.println("\n");
		
		myClassArray[0].MethodInClassB();						//Output- ClassB void Method in ClassA
		myClassArray[1].MethodInClassB();						//Output- ClassB void Method in ClassB x 2
		myClassArray[2].MethodInClassB();						//Output- ClassB void Method in ClassC
		System.out.println("\n");
		
		myClassArray[0].MethodInClassC();						//Output- ClassC void Method in ClassA
		myClassArray[1].MethodInClassC();						//Output- ClassC void Method in ClassB x 2
		myClassArray[2].MethodInClassC();						//Output- ClassC void Method in ClassC
		System.out.println("\n");
	}
}

class ClassA{
	String MystringA = "Var MystringA in ClassA";
	String MystringB = "Var MystringB in ClassA";
	String MystringC = "Var MystringC in ClassA";
	void MethodInClassA() {
		System.out.println("MethodInClassA void Method in ClassA");
	}
	void MethodInClassB() {
		System.out.println("MethodInClassB void Method in ClassA");
	}
	void MethodInClassC() {
		System.out.println("MethodInClassC void Method in ClassA");
	}
}

class ClassB extends ClassA {
	String MystringA = "Var MystringA in ClassB";
	String MystringB = "Var MystringB in ClassB";
	String MystringC = "Var MystringC in ClassB";
	void MethodInClassA() {
		System.out.println("MethodInClassA void Method in ClassB");
	}
	void MethodInClassB() {
		System.out.println("MethodInClassB void Method in ClassB");
	}
	void MethodInClassC() {
		System.out.println("MethodInClassC void Method in ClassB");
	}
}

class ClassC extends ClassB{
	String MystringA = "Var MystringA in ClassC";
	String MystringB = "Var MystringB in ClassC";
	String MystringC = "Var MystringC in ClassC";
	void MethodInClassA() {
		super.MethodInClassA();
		System.out.println("MethodInClassA void Method in ClassC");
	}
	void MethodInClassB() {
		super.MethodInClassB();
		System.out.println("MethodInClassB void Method in ClassC");
	}
	void MethodInClassC() {
		super.MethodInClassC();
		System.out.println("MethodInClassC void Method in ClassC");
	}
}

上述代码的输出结果如下图

Java中的super类似于C#中的base,但Java比C#容易一些,不像C#那样先virtual后才能Override重写覆盖。

super的使用是有限制的,如果是对父类构造函数的调用,要写到本类的构造函数里,如果是对父类方法的调用,要写在本类某个方法里,super是本类或方法的首个语句。Java Eclipse,还行。

有兴趣的话还可以看一看下面的功课情况

Java eclipse 写 Hellow World 和类继承与方法实练(二)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值