更新时间:2022-06-22 12:52:48 来源:极悦 浏览962次
极悦小编告诉大家,类和对象是面向对象编程的基本概念,围绕现实生活中的实体展开。
类是用户定义的蓝图或原型,从中创建对象。它表示一种类型的所有对象共有的一组属性或方法。一般来说,类声明可以包括这些组件,按顺序:
修饰符:类可以是公共的或具有默认访问权限。
类关键字:类关键字用于创建一个类。
类名: 名称应以首字母开头(按约定大写)。
超类(如果有):类的父类(超类)的名称,如果有的话,前面有关键字extends。一个类只能扩展(子类)一个父类。
接口(如果有):由类实现的接口的逗号分隔列表,如果有的话,前面有关键字 implements。一个类可以实现多个接口。
主体:类主体由大括号 { } 包围。
构造函数用于初始化新对象。字段是提供类及其对象状态的变量,方法用于实现类及其对象的行为。
在实时应用程序中使用了各种类型的类,例如 嵌套类、匿名类、lambda 表达式。
它是面向对象编程的基本单元,代表现实生活中的实体。一个典型的 Java 程序会创建许多对象,如您所知,这些对象通过调用方法进行交互。一个对象包括:
1.状态:它由对象的属性表示。它还反映了对象的属性。
2.行为:它由对象的方法表示。它还反映了一个对象对其他对象的响应。
3.身份:它为一个对象赋予一个唯一的名称,并使一个对象能够与其他对象交互。
对象示例:狗
对象对应于现实世界中发现的事物。例如,图形程序可能具有诸如“圆形”、“方形”和“菜单”之类的对象。一个在线购物系统可能有诸如“购物车”、“客户”和“产品”之类的对象。
当一个类的对象被创建时,该类被称为实例化。所有实例共享类的属性和行为。但是这些属性的值,即状态对于每个对象都是唯一的。一个类可以有任意数量的实例。
例子:
当我们声明变量(类型名称;)时。这通知编译器我们将使用名称来引用类型为类型的数据。对于原始变量,此声明还为变量保留了适当的内存量。所以对于引用变量,类型必须是一个具体的类名。一般来说,我们不能创建抽象类或接口的对象。
Dog tuffy;
如果我们像这样声明一个引用变量(tuffy),它的值将是不确定的(null),直到一个对象被实际创建并分配给它。简单地声明一个引用变量并不会创建一个对象。
new 运算符通过为新对象分配内存并返回对该内存的引用来实例化一个类。new 运算符还调用类构造函数。
// Class Declaration
public class Dog
{
// Instance Variables
String name;
String breed;
int age;
String color;
// Constructor Declaration of Class
public Dog(String name, String breed,
int age, String color)
{
this.name = name;
this.breed = breed;
this.age = age;
this.color = color;
}
// method 1
public String getName()
{
return name;
}
// method 2
public String getBreed()
{
return breed;
}
// method 3
public int getAge()
{
return age;
}
// method 4
public String getColor()
{
return color;
}
@Override
public String toString()
{
return("Hi my name is "+ this.getName()+
".\nMy breed,age and color are " +
this.getBreed()+"," + this.getAge()+
","+ this.getColor());
}
public static void main(String[] args)
{
Dog tuffy = new Dog("tuffy","papillon", 5, "white");
System.out.println(tuffy.toString());
}
}
输出:
Hi my name is tuffy.
My breed,age and color are papillon,5,white
此类包含一个构造函数。我们可以识别构造函数,因为它的声明使用与类相同的名称并且它没有返回类型。Java 编译器根据参数的数量和类型来区分构造函数。Dog类中的构造函数有四个参数。以下语句提供“tuffy”、“papillon”、5、“white”作为这些参数的值:
Dog tuffy = new Dog("tuffy","papillon",5, "white");
执行此语句的结果可以说明为:
注意:所有类都至少有一个构造函数。如果一个类没有显式声明,Java 编译器会自动提供一个无参数构造函数,也称为默认构造函数。这个默认构造函数调用类父类的无参数构造函数(因为它只包含一个语句,即 super();),或者如果类没有其他父类则调用Object类构造函数(因为 Object 类是所有类的父类,或者直接或间接)。
在java中有四种创建对象的方法。严格来说只有一种方式(使用new关键字),其余的在内部使用new关键字。
使用 new 关键字:这是在 java 中创建对象的最常见和通用的方法。例子:
// 创建类 Test 的对象
Test t = new Test();
使用 Class.forName(String className) 方法: java.lang 包中有一个名为 Class 的预定义类。forName(String className) 方法返回与具有给定字符串名称的类关联的 Class 对象。我们必须为一个类提供一个完全限定的名称。在此 Class 对象上调用 new Instance() 方法时,将返回具有给定字符串名称的类的新实例。
// 创建公共类 Test 的对象
// 考虑com.p1包中存在的类 Test
Test obj = (Test)Class.forName("com.p1.Test").newInstance();
使用 clone() 方法: object 类中存在 clone() 方法。它创建并返回对象的副本。
// 创建类 Test 的对象
Test t1 = new Test();
// 创建上述对象的克隆
Test t2 = (Test)t1.clone();
反序列化:反序列化是一种从文件中的保存状态读取对象的技术。
FileInputStream file = new FileInputStream(filename);
ObjectInputStream in = new ObjectInputStream(file);
对象 obj = in.readObject();
在实时中,我们需要一个类的不同对象在不同的方法中。创建多个引用来存储它们并不是一个好习惯,因此我们声明一个静态引用变量并在需要时使用它。在这种情况下,内存的浪费更少。不再引用的对象将被java的垃圾收集器销毁。例子:
测试 test = new Test();
测试 = 新测试();
在继承系统中,我们使用父类引用变量来存储子类对象。在这种情况下,我们可以使用相同的引用变量切换到不同的子类对象。例子:
类动物{}
类狗扩展动物{}
类猫扩展动物{}
公开课测试
{
// 使用 Dog 对象
动物 obj = new Dog();
// 使用猫对象
obj = 新猫();
}
匿名对象是被实例化但不存储在引用变量中的对象。
它们用于立即方法调用。
它们将在方法调用后被销毁。
它们广泛用于不同的库中。例如,在 AWT 库中,它们用于在捕获事件时执行某些操作(例如按键)。
在下面的例子中,当一个键是按钮(由btn引用)被按下时,我们只是创建了EventHandler类的匿名对象来调用handle方法。
btn.setOnAction(新事件处理程序()
{
公共无效句柄(ActionEvent 事件)
{
System.out.println("Hello World!");
}
});
以上就是关于“Java中的类和对象”的介绍,大家如果对此比较感兴趣,想了解更多相关知识,不妨来关注一下极悦的Java教程,里面有更丰富的知识等着大家去学习,希望对大家能够有所帮助哦。
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习