第08章 对象和包
本章重点:
1、对象以及对象的成员
2、访问控制符
3、重载和包
4、Java的注释
对象有3个主要特征:行为、状态、标识符。
public class newClass{
void print(){
System.out.println("我是一名优秀的程序员");
}
public static void main(String[] args){
newClass nc = new newClass();
nc.print();
}
}
成员方法实际上就是函数,而函数拥有自己的特性,在定义方法时必须遵照下面的结构:
返回值类型 方法名(形式参数){
方法体;
}
public class newClass{
void print(){
System.out.println("我是一名优秀的程序员");
}
int numPrint(int x){
return 2*x;
}
public static void main(String[] args){
newClass nc = new newClass();
nc.print();
System.out.println("我的年龄:" + nc.numPrint(18));
}
}
所谓的访问控制符就是能够控制访问权限的关键字。
Java控制符有如下几种:
1、类访问控制符:public、default。
public :在所有类中的访问。
default:在同一包中的类可以访问。
2、成员变量与成员方法的访问控制符:private、public、default、protected。
private :说明这个变量只能在类的内部被访问,类的外部是不能被访问的。
public :说明这个变量所有的类都可以访问。
default :说明只有同一个包中的类才能访问。
protected:不仅同一个包中的类可以访问,并且位于其他包中的子类也可以访问。
public class oneObj{
public static void main(String[] args){
twoObj to = new twoObj();
to.print(2);
System.out.println(2* to.x);
}
}
class twoObj{
public int x=1;
public void print(int y){
System.out.println(2*y);
}
}
在Java中,同一个类中的许多方法可以拥有同一个名字,只要它们的参数声明不同即可,
这种方法就称为重载(overloaded),此过程被称为方法重载(method overloading)。
1、方法名相同。
2、参数个数可以不同
3、参数类型可以不同
public class methodOverLoading{
public static void main(String[] args){
methodOverLoading method = new methodOverLoading();
method.test();
method.test(2);
method.test("明白函数重载了吗?");
}
void test(){
System.out.println("无参数");
}
void test(int a){
System.out.println(a*2);
}
void test(String a){
System.out.println(a);
}
}
“包”机制是Java中特有的,也是Java中最基础的知识之一。
在Java程序语言中,为了开发方便,会将多个功能相似的类放到一个组内,而这个组就是“包”,包就像一个目录结构。
声明一个包必须使用关键字“package”。
在Java中调用其他包中的公用类,可以使用两种方式:
import java.util.Date;
public class DatePA{
public static void main(String[] args){
System.out.println(new Date()); //配合import java.util.Date使用
System.out.println(new java.util.Date()); //直接调用包使用,不推荐使用。
}
}
静态导入:
在以前版本的Java语法中,关键字import只能导入一个类或包中的所有类,而最新特性中还可以导入静态方法和静态域。
import static 包名.类名.*;
例如:
import static java.lang.System.*;
out.println("test"); 等价于 System.out.println("test");
如何打包:
javac -d . StaticClass.java
javac -d . StaticImport.java //“.” 表示当前目录
package com.cjg.StaticImport;
public class StaticClass{
public static int MAX = 100;
public static void daying(int x){
System.out.println(x);
}
}
import static com.cjg.StaticImport.StaticClass.*;
import static java.lang.Math.abs;
public class StaticImport{
public static void main(String[] args){
System.out.println(MAX);
daying(5);
}
}