Java对象和类
java作为一种面向对象的语言,支持以下概念
- 多态
- 继承
- 封装
- 抽象
- 类
- 对象
- 实例
- 方法
- 重载
对象
对象是类的一个实例,有着行为和状态
类
类是一个模板,描述了一类对象的行为和状态
以上概念类似于:
汽车是一个类,其中有红色福特、红色野马
蓝色丰田等。其中汽车的具体车辆是对象
根据理解可以创建一个简单的类来理解java中的类的定义
public class Dog{
String breed;
int size;
String colour;
int age;
void eat(){
}
void run(){
}
void sleep(){
}
void name(){
}
}
这是一个动物的类,其中定义了各类元素
其中一个类可以包括以下类型变量
- 局部变量:在方法、构造方法钟定义的变量叫做局部变量。变量声明和初始化都在方法中,方法结束后变量也会自动销毁
- 成员变量:成员变量是定义在类中,方法体之外的变量。这种变量在创建对象的时候进行实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问
- 类变量:类变量也声明在类中,方法体之外,但那是必须声明为static类型
一个类可以拥有多个方法,上面例子中的eat(),run()等都是Dog类的方法
构造方法
每个类都有构造方法。如果没有显示的为类定义方法,java编译器会给和给该类提供一个默认的构造方法。
在创建一个对象的时候,至少要调用一个构造方法,构造方法的名称必须与类同名。一个类可以有多个构造方法。
创建对象
对象是根据类创建的。在java中,使用关键字new来创建一个新的对象。创建对象需要以下三步。
- 声明:声明一个对象,包括对象名称和对象类型
- 实例化:使用关键字new来创建一个对象
- 初始化:使用new创建对象时,会调用构造方法初始化对象
public class Puppy {
public Puppy(String name){
System.out.println("小狗的名字是:"+name);
}
public static void main(String[] args) {
Puppy myPuppy = new Puppy("Tonny" );
}
}
实例
package testtwo.demo;
public class Puppy {//定义Puppy类
int PuppyAge;
public Puppy(String name){ //类的构造函数
System.out.println("小狗的名字是:"+name);//在调用该函数时会输出该内容
}
public void setAge(int age){//创建方法函数,该方法是获取数字赋值给PuppyAge变量。
PuppyAge=age;
}
public int getAge(){//创建方法函数,输出小狗年龄
System.out.println("小狗年龄为:"+PuppyAge);
return PuppyAge;
}
public static void main(String[] args) {
Puppy myPutty = new Puppy("Tonny");//创建对象myPuppy
myPutty.setAge(2);//调用方法来设置age
myPutty.getAge();//调用方法获取age
System.out.println(myPutty.PuppyAge);//另一种方法获取成员变量
}
}
源文件声明规则
当一个源文件中定义多个类,并且还有import语句和package语句的时候,要特别注意这些规则
- 一个源文件中只能有一个Public类
- 一个源文件可以有多个非Public类
- 源文件的名称应该和public的类名保持一致
- 如果一个类定义在某一个包中,那么package语句应该放到源文件的首行
- 如果源文件包含import语句,那么应该放在package语句和类定义之间,如果没有package语句,那么import语句应该放在源文件的最前面
- import语句和package语句对源文件中定义的所有类都有效,在同一源文件中,不能给不同类不同包声明
package testtwo.demo;
import java.security.PublicKey;
public class Employee {
String name;
int age;
String designation;
double salary;
public Employee(String name){
this.name=name;
}
public void empAge(int empAge){
age=empAge;
}
public void empSalary(double empSalary){
salary=empSalary;
}
public void empDesignation(String empDesig){
designation=empDesig;
}
public void printfEmployee(){
System.out.println("名字:"+name);
System.out.println("年龄:"+age);
System.out.println("职位:"+designation);
System.out.println("薪水:"+salary);
}
}
package testtwo.demo;
public class EmployeeTest {
public static void main(String[] args) {
Employee empOne = new Employee("people1");
Employee empTwo = new Employee("people2");
empOne.empAge(26);
empOne.empDesignation("高级程序猿");
empOne.empSalary(1000);
empOne.printfEmployee();
empTwo.empAge(21);
empTwo.empDesignation("菜鸟程序猿");
empTwo.empSalary(500);
empTwo.printfEmployee();
}
}