📜  Java中的对象和类

📅  最后修改于: 2020-09-24 00:40:54             🧑  作者: Mango

Java中的对象和类

在此页面中,我们将学习Java对象和类。在面向对象的编程技术中,我们使用对象和类设计程序。

Java中的对象既是物理实体又是逻辑实体,而Java中的类仅是逻辑实体。

Java中的对象是什么

具有状态和行为的实体称为对象,例如椅子,自行车,记号笔,笔,桌子,汽车等。它可以是物理的或逻辑的(有形的和无形的)。无形资产的例子是银行系统。

一个对象具有三个特征:

  • 状态:表示对象的数据(值)。
  • 行为:表示对象的行为(功能),例如存款,提款等。
  • 身份:对象身份通常是通过唯一ID实现的。该ID的值对外部用户不可见。但是,JVM在内部使用它唯一地标识每个对象。

例如,Pen是一个对象。它的名字叫雷诺兹。颜色为白色,称为状态。它用于书写,因此书写是其行为。

对象是类的实例。类是从中创建对象的模板或蓝图。因此,对象是类的实例(结果)。

对象定义:

  • 对象是真实世界的实体
  • 对象是运行时实体
  • 对象是具有状态和行为的实体
  • 该对象是类的实例

Java中的类是什么

类是具有共同属性的一组对象。它是从中创建对象的模板或蓝图。它是一个逻辑实体。它不可能是物理的。

Java中的类可以包含:

  • 领域
  • 方法
  • 建设者
  • 积木
  • 嵌套类和接口

声明一个类的语法:

class {  
    field;  
    method;  
}  

Java中的实例变量

在类内部但在方法外部创建的变量称为实例变量。实例变量在编译时不获取内存。创建对象或实例时,它将在运行时获取内存。这就是为什么它被称为实例变量的原因。

Java中的方法

在Java中,方法就像一个函数,用于公开对象的行为。

方法优势

  • 代码可重用性
  • 代码优化

Java中的新关键字

new关键字用于在运行时分配内存。所有对象都会在堆内存区域中获取内存。

对象和类示例:类内的main

在此示例中,我们创建了一个Student类,该类具有两个数据成员id和name。我们正在通过new关键字创建Student类的对象,并打印该对象的值。

在这里,我们在类内部创建一个main()方法。

档案:Student.java

//Java Program to illustrate how to define a class and fields  
//Defining a Student class.  
class Student{  
 //defining fields  
 int id;//field or data member or instance variable  
 String name;  
 //creating main method inside the Student class  
 public static void main(String args[]){  
  //Creating an object or instance  
  Student s1=new Student();//creating an object of Student  
  //Printing values of the object  
  System.out.println(s1.id);//accessing member through reference variable  
  System.out.println(s1.name);  
 }  
}  

输出:

对象和类示例:主类之外

在实时开发中,我们创建类并从另一个类中使用它。这是比以前更好的方法。让我们看一个简单的示例,在另一个类中有main()方法。

我们可以在不同的Java文件或单个Java文件中拥有多个类。如果在单个Java源文件中定义多个类,则最好使用具有main()方法的类名保存文件名。

档案:TestStudent1.java

//Java Program to demonstrate having the main method in   
//another class  
//Creating Student class.  
class Student{  
 int id;  
 String name;  
}  
//Creating another class TestStudent1 which contains the main method  
class TestStudent1{  
 public static void main(String args[]){  
  Student s1=new Student();  
  System.out.println(s1.id);  
  System.out.println(s1.name);  
 }  
}  

输出:

3种初始化对象的方法

Java中有3种初始化对象的方法。

  • 通过参考变量
  • 按方法
  • 按构造函数

1)对象和类示例:通过引用进行初始化

初始化对象意味着将数据存储到对象中。让我们看一个简单的示例,在该示例中,我们将通过引用变量来初始化对象。

文件:TestStudent2.java

class Student{  
 int id;  
 String name;  
}  
class TestStudent2{  
 public static void main(String args[]){  
  Student s1=new Student();  
  s1.id=101;  
  s1.name="Sonoo";  
  System.out.println(s1.id+" "+s1.name);//printing members with a white space  
 }  
}  

输出:

我们还可以创建多个对象,并通过引用变量在其中存储信息。

文件:TestStudent3.java

class Student{  
 int id;  
 String name;  
}  
class TestStudent3{  
 public static void main(String args[]){  
  //Creating objects  
  Student s1=new Student();  
  Student s2=new Student();  
  //Initializing objects  
  s1.id=101;  
  s1.name="Sonoo";  
  s2.id=102;  
  s2.name="Amit";  
  //Printing data  
  System.out.println(s1.id+" "+s1.name);  
  System.out.println(s2.id+" "+s2.name);  
 }  
}  

输出:

2)对象和类示例:通过方法进行初始化

在此示例中,我们将创建Student类的两个对象,并通过调用insertRecord方法将这些对象的值初始化。在这里,我们通过调用displayInformation()方法来显示对象的状态(数据)。

文件:TestStudent4.java

class Student{  
 int rollno;  
 String name;  
 void insertRecord(int r, String n){  
  rollno=r;  
  name=n;  
 }  
 void displayInformation(){System.out.println(rollno+" "+name);}  
}  
class TestStudent4{  
 public static void main(String args[]){  
  Student s1=new Student();  
  Student s2=new Student();  
  s1.insertRecord(111,"Karan");  
  s2.insertRecord(222,"Aryan");  
  s1.displayInformation();  
  s2.displayInformation();  
 }  
}  

输出:

如上图所示,对象在堆内存区域中获取内存。引用变量引用在堆内存区域中分配的对象。此处,s1和s2都是引用变量,它们引用内存中分配的对象。

3)对象和类示例:通过构造函数初始化

稍后我们将学习Java中的构造函数。

对象和类示例:员工

让我们看一个维护员工记录的示例。

文件:TestEmployee.java

class Employee{  
    int id;  
    String name;  
    float salary;  
    void insert(int i, String n, float s) {  
        id=i;  
        name=n;  
        salary=s;  
    }  
    void display(){System.out.println(id+" "+name+" "+salary);}  
}  
public class TestEmployee {  
public static void main(String[] args) {  
    Employee e1=new Employee();  
    Employee e2=new Employee();  
    Employee e3=new Employee();  
    e1.insert(101,"ajeet",45000);  
    e2.insert(102,"irfan",25000);  
    e3.insert(103,"nakul",55000);  
    e1.display();  
    e2.display();  
    e3.display();  
}  
}  

输出:

对象和类示例:矩形

给出了另一个维护Rectangle类记录的示例。

文件:TestRectangle1.java

class Rectangle{  
 int length;  
 int width;  
 void insert(int l, int w){  
  length=l;  
  width=w;  
 }  
 void calculateArea(){System.out.println(length*width);}  
}  
class TestRectangle1{  
 public static void main(String args[]){  
  Rectangle r1=new Rectangle();  
  Rectangle r2=new Rectangle();  
  r1.insert(11,5);  
  r2.insert(3,15);  
  r1.calculateArea();  
  r2.calculateArea();  
}  
}  

输出:

用Java创建对象的不同方式有哪些?

有很多方法可以用Java创建对象。他们是:

  • 通过新关键字
  • 通过newInstance()方法
  • 通过clone()方法
  • 通过反序列化
  • 通过工厂方法等

稍后我们将学习这些创建对象的方法。

匿名对象

匿名只是意味着无名。没有引用的对象称为匿名对象。它只能在创建对象时使用。

如果您只需要使用一次对象,则匿名对象是一种很好的方法。例如:

new Calculation();//anonymous object  

通过引用调用方法:

Calculation c=new Calculation();  
c.fact(5);  

通过匿名对象调用方法

new Calculation().fact(5);  

让我们看一下Java中匿名对象的完整示例。

class Calculation{  
 void fact(int  n){  
  int fact=1;  
  for(int i=1;i<=n;i++){  
   fact=fact*i;  
  }  
 System.out.println("factorial is "+fact);  
}  
public static void main(String args[]){  
 new Calculation().fact(5);//calling method with anonymous object  
}  
}  

输出:

仅按一种类型创建多个对象

我们只能像使用基元一样通过一种类型创建多个对象。

原始变量的初始化:

int a=10, b=20;  

引用变量的初始化:

Rectangle r1=new Rectangle(), r2=new Rectangle();//creating two objects  

让我们来看一个例子:

//Java Program to illustrate the use of Rectangle class which  
//has length and width data members  
class Rectangle{  
 int length;  
 int width;  
 void insert(int l,int w){  
  length=l;  
  width=w;  
 }  
 void calculateArea(){System.out.println(length*width);}  
}  
class TestRectangle2{  
 public static void main(String args[]){  
  Rectangle r1=new Rectangle(),r2=new Rectangle();//creating two objects  
  r1.insert(11,5);  
  r2.insert(3,15);  
  r1.calculateArea();  
  r2.calculateArea();  
}  
}  

输出:

真实示例:帐户

文件:TestAccount.java

//Java Program to demonstrate the working of a banking-system  
//where we deposit and withdraw amount from our account.  
//Creating an Account class which has deposit() and withdraw() methods  
class Account{  
int acc_no;  
String name;  
float amount;  
//Method to initialize object  
void insert(int a,String n,float amt){  
acc_no=a;  
name=n;  
amount=amt;  
}  
//deposit method  
void deposit(float amt){  
amount=amount+amt;  
System.out.println(amt+" deposited");  
}  
//withdraw method  
void withdraw(float amt){  
if(amount

输出: