学习java的tips(不断更新)

自己在学Java的时候先从命令行编译、执行入手。所以首先接触到了一些关于命令行指令的知识。

1.命令行指令总结(更新中)

1.1.1

进入命令行界面:快捷键windows+R-->输入cmd

1.1.2

进入到命令行洁面后如果输入可能会有个比较碍眼的输入法问题,解决方法:Ctrl+空格

1.2.1

查看Java的版本:在进入命令行界面后输入java,然后回车。

1.2.2

每次打开命令行,它的地址默认是C盘。可以输入 d:  然后回车可以转到D盘。或者输入cd d:路径1\路径2\路径3\路径4然后回车。

1.2.3

dir,可以显示当前目录下的文件信息(文件名,修改时间,大小等)。

1.2.4

cd ..   可以返回上一级目录。

1.2.5

命令行太多,显示的太乱的时候可以使用cls清屏。

1.3.1

编译指令:在.java文件所在目录下输入javac -encoding utf-8 文件名.java,然后回车就可以编译当前源代码。( 在某些版本jdk中不自动识别中文,尤其是注释中的中文,加上-encoding utf-8就可以解决这个问题 )

1.3.2

执行指令:同样是和编译后得到的.class文件在同一目录下,输入java 文件名,然后回车就行。不用输入.java

2.Java的封装特性:

2.1

访问控制修饰符:Java提供了四种访问修饰符号控制方法和变量的访问权限。

2.1.1

public(公开级别):用public修饰,对外公开。

2.1.2

protected(受保护级别):用protected修饰,对子类和同一个包中的类公开。

2.1.3

默认级别:没有修饰符,相同一个包的类公开。

2.1.4

private(私有级别):用private修饰,只有类本身可以访问,不对外公开。

3.Java的继承

3.1

继承的注意事项:

①子类最多只能继承一个父类(指的是直接继承)

②java中所有类都是Object类的子类

③如果不希望父类中某些属性或方法被子类继承,则需将该属性或方法的类型改为私有private即可

④继承语句:A extends B(A继承了B的某些内容)

4.Java的方法重载和方法的覆盖

4.1方法重载

4.1.1方法重载的引入

问题1:编写一段代码比较两个整数的大小,返回较大的数值。

问题2:编写一段代码比较两个float数的大小,返回较大的数值。

如果不适用“方法重载”那么程序需要写成下面的样子。

public class Demo2 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Abc abc=new Abc();
		System.out.println(abc.getMaxint(2,5));//比较两个整数2,5的大小
		System.out.println(abc.getMaxfloat(2.1f,5.4f));//比较两个小数2.1,5.4的大小
	}

}
class Abc
{
	//返回较大的整数
	public int getMaxint(int i,int j)
	{
		if(i>j)
		{
			return i;
		}
		else
		{
			return j;
		}
	}
	
	//返回较大的float数
	public float getMaxfloat(float i,float j)
	{
		if(i>j)
		{
			return i;
		}
		else
		{
			return j;
		}
	}
}

可以看到getMaxint与getMaxfloat两个方法的实现是很像的,逻辑是一样的,不同的是输入变量的类型和返回值的类型。如果就是按照上面的例子那么调用的时候会比较麻烦,需要人为的判断自己要比较的两个数的类型是int还是float,然后决定要是用哪个方法。

有没有一种方法使得:函数名一样,返回的类型不同或者输入的类型、输入的变量顺序不同(还是有点区别的)?!

有的!!!“方法重载”(overload)。

4.1.2 方法重载的注意事项

① 方法名相同

② 方法的参数类型,个数,(类型的)顺序至少有一项不同(强制)

③ 方法的返回类型可以不同(不强制)(仅仅是返回类型不一样,不能够构成重载)

④ 方法的修饰符可以不同(不强制)(仅仅是返修饰符不一样,不能够构成重载)

4.1.3 方法重载的具体实现

public class Demo2 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Abc abc=new Abc();
		System.out.println(abc.getMax(2,5));//比较两个整数2,5的大小
		System.out.println(abc.getMax(2.1f,5.4f));//比较两个小数2.1,5.4的大小
	}

}
class Abc
{
	//返回较大的整数
	public int getMax(int i,int j)
	{
		if(i>j)
		{
			return i;
		}
		else
		{
			return j;
		}
	}
	
	//返回较大的float数
	public float getMax(float i,float j)
	{
		if(i>j)
		{
			return i;
		}
		else
		{
			return j;
		}
	}
}

4.2 方法的覆盖(override)

4.2.1 方法覆盖的引入

既然子类可以继承父类,这样可以提高代码的复用性。但是问题来了,如果子类中的方法和父类中的方法在实现上是有区别的应该怎么办?重新再子类写一个完全不同的方法吗?!答案自然是不必。

4.2.3方法的覆盖

问题:要求写三个类,猫猫、狗狗、猪猪,这三个东东都是动物,动物作为一个很大的类别必然存在一些相同的特点。根据类的抽象特征,我们可以把它们相同点提取出来形成一个父类Animal,然后再继承,写出猫、狗、猪三个子类。问题的核心怎么解决子类和父类方法的异同!!!

猜你喜欢

转载自blog.csdn.net/qq_27010559/article/details/81191361