📅  最后修改于: 2020-09-24 00:40:54             🧑  作者: Mango
在此页面中,我们将学习Java对象和类。在面向对象的编程技术中,我们使用对象和类设计程序。
Java中的对象既是物理实体又是逻辑实体,而Java中的类仅是逻辑实体。
具有状态和行为的实体称为对象,例如椅子,自行车,记号笔,笔,桌子,汽车等。它可以是物理的或逻辑的(有形的和无形的)。无形资产的例子是银行系统。
一个对象具有三个特征:
例如,Pen是一个对象。它的名字叫雷诺兹。颜色为白色,称为状态。它用于书写,因此书写是其行为。
对象是类的实例。类是从中创建对象的模板或蓝图。因此,对象是类的实例(结果)。
对象定义:
类是具有共同属性的一组对象。它是从中创建对象的模板或蓝图。它是一个逻辑实体。它不可能是物理的。
Java中的类可以包含:
class {
field;
method;
}
在类内部但在方法外部创建的变量称为实例变量。实例变量在编译时不获取内存。创建对象或实例时,它将在运行时获取内存。这就是为什么它被称为实例变量的原因。
在Java中,方法就像一个函数,用于公开对象的行为。
new关键字用于在运行时分配内存。所有对象都会在堆内存区域中获取内存。
在此示例中,我们创建了一个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);
}
}
输出:
Java中有3种初始化对象的方法。
初始化对象意味着将数据存储到对象中。让我们看一个简单的示例,在该示例中,我们将通过引用变量来初始化对象。
文件: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);
}
}
输出:
在此示例中,我们将创建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都是引用变量,它们引用内存中分配的对象。
稍后我们将学习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创建对象。他们是:
稍后我们将学习这些创建对象的方法。
匿名只是意味着无名。没有引用的对象称为匿名对象。它只能在创建对象时使用。
如果您只需要使用一次对象,则匿名对象是一种很好的方法。例如:
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
输出: