Java作为一种面向对象语言,有如下基本概念
-
多态 继承 封装 抽象 类 对象 实例 方法 消息解析
类和对象
- 对象:对象是类的一个实例,有状态和行为
- 类:类是一个模板,描述一类对象的行为和状态
# java中类的定义
public class ClassName{
String catName;
int age;
String color;
void method1(){
}
void method2(){
}
void method3(){
}
}
一个类可以包含以下类型变量
- 局部变量:在方法、构造方法或者语句块中定义的变量,变量的声明和初始化都是在 方法中,当方法结束后,变量会自动销毁
- 成员变量:定义在类中、方法体之外的变量。在创建对象的时候实例化。成员变量可以被类中的方法、构造方法和特定类的语句块访问
- 类变量(静态变量):声明在类中、方法体之外,但必须声明为static类型
构造方法
每个类都有构造方法。如果没有显式地为类定义构造方法,Java编译器将会为该类提供一个默认构造方法。
在创建一个对象的时候,至少要调用一个构造方法。构造方法的名称必须与类同名,一个类可以有多个构造方法。
public class Demo{
public Demo(){
}
public Demo(String name){
}
}
创建对象
对象是根据类创建的,使用new关键字来新建一个对象;创建对象步骤如下:
- 声明:声明一个对象,包括对象名称和对象类型
- 实例化:使用关键字new来创建一个对象
- 初始化:使用new创建对象时,会调用构造方法初始化对象
public class Puppy{
public Puppy(String name){
System.out.println("Passed Name is"+ name);
}
public static void main(String args[]){
Puppy myPuppy = new Puppy("tom");
}
}
访问实例变量和方法
通过已创建的对象来访问成员变量和成员方法
/* 实例化对象 */
ObjectReference = new Constructor();
/* 访问类中变量 */
ObjectReference.variableName;
/* 访问类中的方法 */
ObjectReference.MethodName();
访问实例变量和调用成员方法
public class Puppy{
int puppyAge;
public Puppy(String name){
System.out.println("Passed Name is :"+ name);
}
public void setAge(int age){
puppyAge = age;
}
public void getAge(int age){
System.out.println("Puppy's age is "+ puppyAge);
return puppyAge;
}
public static void main(String[] args){
/* 创建对象 */
Puppy myPuppy = new Puppy("tom");
/* 通过方法来设定age */
myPuppy.setAge(21);
/* 调用另一个方法获取age */
myPuppy.getAge();
/* 另一种方位成员变量 */
System.out.println("Variable Value :" + myPuppy.puppyAge);
}
}
源文件声明规则
当在一个源文件中定义多个类,并且还有import语句和package语句时,要特别注意这些规则。
一个源文件中只能有一个public类
一个源文件可以有多个非public类
源文件的名称应该和public类的类名保持一致。例如:源文件中public类的类名是Employee,那么源文件应该命名为Employee.java。
如果一个类定义在某个包中,那么package语句应该在源文件的首行。
如果源文件包含import语句,那么应该放在package语句和类定义之间。如果没有package语句,那么import语句应该在源文件中最前面。
import语句和package语句对源文件中定义的所有类都有效。在同一源文件中,不能给不同的类不同的包声明。
java包
主要用来对类和接口进行分类
import语句
在Java中,如果给出一个完整的限定名,包括包名、类名,那么Java编译器就可以很容易地定位到源代码或者类。Import语句就是用来提供一个合理的路径,使得编译器可以找到某个类。