1.java类class的定义
所有java程序都以类class为组织单元,java类由属性和方法组成,下面看例子:
public class Phone{
//属性
String company;
float cpu;
//方法
void call() {
System.out.println("这是一部手机!");
}
}
2.java对象的创建以及使用
上面我们已经创建了一个类Phone,所谓对象就是对这个人为构造的类进行实例化。
创建:
Phone iphone = new Phone(); 这个iphone就是对Phone这个类的实例化,它就是一个对象,继承了Phone类的所有属性以及方法。
使用:
iphone.company="苹果公司"; 这里是对对象iphone的company进行赋值操作
iphone.call(); 这里是调用对象iphone的call方法
3.java类中的变量类型
成员变量:通俗来讲就是指class下定义的属性和方法;
局部变量:通俗来讲就是指class下的方法中所含的变量;
那么是不是这两种变量是不是可以随意访问呢,这就涉及到一个作用域的问题。
我们把成员变量当做父亲,局部变量是方法(父亲)下的变量,即为儿子;
那么父亲出生时必然是看不到儿子的,所以在父亲所在的环境里不能够访问儿子(局部变量);
同理,儿子出生时必然可以看见父亲,所以在儿子所在的环境里是绝对能够访问父亲(成员变量),
即在class下方法内部是可以访问class下定义的成员变量。
4.构造方法
所谓构造方法,是指定义在java类中初始化对象的方法,实例化对象的时候自动执行这个构造方法。
特点是:与类同名、没有返回值;
e.g: public class Todo{
String str;
public Todo(){
this.str="桔子桑";
System.out.println(str);
}
}
调用时,直接Todo eco = new Todo();自动输出上面的字符串。
构造函数采用this语句实现了对成员变量的初始化。
有参的构造方法就不赘述了,要在参数前面指定参数类型。
如果没有定义构造方法,系统会自动生成一个空的无参构造方法。
5.static修饰符和final修饰符
static修饰符在java类中很常见,就是静态修饰符,例如:
static String name = "桔子桑";
public static void main(String[] args) { 方法体};
用static修饰的类的成员(属性或者方法)是供类的所有实例化对象公用的;
就像现在有一块黑板,大家都可以在上面画画写字,A画了一幅画之后,B再拿到这块黑板时,
这块黑板上就会有A的画,如果B再对其修改,传到C手里,C看到的就是B修改后的样子。
static的作用就在于此,它所修饰的类的成员可以看作是动态变化的。
final修饰符通常定义常量,一旦定义之后此常量不可改变;
final double PI = 3.14;
这样定义之后,程序里面的PI就都等于3.14,要想在别处对其进行赋值改变它的值也是无效的。
6.静态属性与静态方法之间的访问问题
静态方法中只能直接访问同类中的静态成员(属性和方法);
静态方法中间接访问非静态成员可以通过先在静态方法中实例化一个类的对象,然后通过这个对象来访问非静态成员;
非静态方法中可以直接访问类中的任意成员,无论静态与否。
7.初始化块(静态与非静态)
前面我们已经提过,类可以通过构造方法进行对象的初始化操作,下面还有一种新的初始化方法---初始化块。
写法:假设已经定义了成员变量String name;static int age;在初始化时对其赋值,
{ name = "桔子桑" ; }
static { age = 99; }
注意:静态初始化块只能给静态变量赋值,并且程序会优先运行静态初始化块。
8.封装
我们可以看到一点,在前面所有的例子中,类里面定义的属性写法大多像这样:String name;
其实这样写,用户可以在本类、同包中通过class名.name访问这个属性(访问修饰符在后面会讲到);
我们通常的做法是在定义变量的时候声明其为私有的:private String name,这样只能在本类中访问这个属性;
那么要怎么才能访问或者修改呢?这里就会通过封装一个方法来做这些事;
按照编程规范,通常定义两个方法:setter和getter;
修改名字:public void setName(String newname){ name = newname; }
获取名字:public String getName() { return name;}
9.包(package)
你可能已经注意到,一个项目下来会有很多的.java文件,那么这些文件之间是怎么关联的呢?其实在这里就用到了包管理
在同一个包下的两个java文件要实现关联可以直接使用package 包名.类名,或者就干脆用package 包名;
那么,不在一个包下的两个java文件要实现关联就得用到import字段了:import 项目名.包名.类名,
这就像是在电脑上找一个文件一样,D:\web\demo\demo.html
10.访问修饰符
访问修饰符 本类 同包 子类 其他
private √
默认 √ √
pretected √ √ √
public √ √ √ √