本人学习视频用的是马士兵的,也在这里献上
<链接:https://pan.baidu.com/s/1qKNGJNh0GgvlJnitTJGqgA>
提取码:fobs
方法的重载是指一个类中可以定义有相同的名字,但参数不同的多个方法。调用时,会根据不同的参数表选择对应的方法。
比较下面两段代码
void max(int a, int b) {
System.out.println(a > b ? a : b);
}
void max(float a, float b) {
System.out.println(a > b ? a : b);
}
上面两个方法的返回类型和方法名相同,参数类型不同,构成重载。
当编译器执行完整的代码
public class TestOverload {
void max(int a, int b) {
System.out.println(a > b ? a : b);
}
void max(float a, float b) {
System.out.println(a > b ? a : b);
}
public static void main(String[] args) {
TestOverload t = new TestOverload();
t.max(3, 4);
}
}
此时编译器可以通过核对方法传入的参数类型得出代码段想要执行的方法。
以上例子可以说明,对于同一类中方法名、返回类型相同的方法,编译器可以通过比较形式参数的数据类型,形式参数的数量,甚至形式参数的排列顺序来得知需要调用的方法。
构造方法也可以构成重载
class Person {
Person() {
id = 0;
age = 20;
}
Person(int _id) {
id = _id;
age = 23;
}
Person(int _id, int _age) {
id = _id;
age = _age;
}
由于传入的参数不同,对象Person在初始化时将根据传入的参数进行相应的初始化。
观察下面代码
public class Leaf {
int i = 0;
Leaf(int i) {
this.i = i; //调用类Leaf的i属性,使之赋值为形参i的值
}
Leaf increment() {
i++;
return this; //返回类Leaf本身的引用
}
void print() {
System.out.println("i = " + i);
}
public static void main(String[] args) {
Leaf leaf = new Leaf(100);
leaf.increment().increment().print(); //两次使用increment,每次都返回对象的引用,每次返回前都会使i自增
}
}
输出结果:
i = 102
观察下面代码
public class Cat {
private static int sid = 0;
private String name;
int id;
Cat(String name) {
this.name = name;
id = sid++;
}
public void info(){
System.out.println
("My name is "+name+" No."+id);
}
public static void main(String arg[]){
Cat.sid = 100;
Cat mimi = new Cat("mimi");
mimi.sid = 2000;
Cat pipi = new Cat("pipi");
mimi.info();
pipi.info();
System.out.println(Cat.sid);
}
}
输出结果:
My name is mimi No.100
My name is pipi No.2000
2001
对于上述代码中的静态变量sid,其不依赖于某个“mimi”或者“pipi”对象,直接通过Cat类进行访问。也因此不会因为某个对象的初始化而改变,从而可以作为计数器。
与静态变量sid相反,成员变量id不能在入口函数main中赋值,因为成员变量依附于某个对象而被存储,否则会报错: 错误: 无法从静态上下文中引用非静态 变量
为便于管理大型软件系统中数目众多的类,解决类的命名冲突的问题,Java引入包(package)机制,提供类的多重命名空间。
package语句作为Java源文件的第一条语句,指明该文件中定义的类所在的包。(若缺省该语句,则指定为无名包)。
package pkg1[.pkg2[.pkg3…]];
Java编译器把包对应于文件系统的目录管理,package语句中,用 .
来指明包(目录)的层次
package com.sxt;
改文件中所有的类位于 .\com\sxt 目录下如果将一个类打包,则使用该类是,必须使用该类的全名(例如:com.sxt.MyClass),Java编译器才会找到该类。
也可以使用import在文件开头引入要使用的类,例如
import com.sxt.Myclass;
import java.util.* //引入java.util包中所有的类
… … …
MyClass myclass = new MyClass(); //可以直接使用类名
可以不需要用import语句直接使用java.lang包中的类
class文件的最上层包的父目录必须位于classpath下
将自己的java文件打包的方法:
快捷键win+r,输入cmd,cd到java文件的目录下,输入 jar -cvf xx(包的名字).jar *.*
手机扫一扫
移动阅读更方便
你可能感兴趣的文章