欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java面向对象和类

程序员文章站 2022-05-25 20:49:27
...

类和对象

最简单的类: class A{};//没有任何属性和行为


对象: A obj=new A();


类是定义,是规范,是“死”的东西。类似于水果这个概念,实际上并不存在。


对象是实例,是类的一个实现,是一个具体的东西。


A obj1=new A(); A obj2=new A();

以上有两个对象,它们的类型都是A,但是这是两个不同的对象,在内存中有不同的存放地址。因此,没有两个对象是完全一样的。

  • A obj=new A();
  • obj可以看做内存中一个对象(包括若干个数据的句柄)。
  • 在C/C++中obj称为指针,在Java中称为Reference(引用)。
  • 对象赋值是Reference赋值,而基本类型是直接值拷贝。
  • 产生一个对象,A obj=new A();

-%99是用new关键字,还有%1是用克隆和反射生成。

  • new出对象后,内部属性值默认是?

short 0; int 0; long 0;

boolen false;

char '\u0000';(备注:其实就是一个空字符)

byte 0;

float 0.0f;

double 0.0d;

  • 函数内部的局部变量,编译器不会给默认值,需要初始化后才可以使用;类的成员变量,编译器会给默认值,可直接使用。

构造函数

如何在变量产生时就给成员变量赋值呢?


答案就在构造函数内

public class A{
    int id;
    public A(int id2)
    {
        id=id2;
    }
}

A obj=new A(10);


Java构造函数的名称必须和类名相同,且没有返回值。

Java有构造函数,但是没有析构函数。

每个变量都是有生命周期的,它只能存储在离它最近的一对{}中。

Java具有自动回收机制,当变量退出其生命周期后,JVM会自动回收所分配的对象的内存。所以不需要析构函数来释放内存。
Java面向对象和类
Java面向对象和类

信息隐藏和this

信息隐藏

面向对象有一个法则---信息隐藏

  • 类的成员属性,是私有的private。

  • 类的方法是公有的public,通过方法修改成员属性的值。

this

  • this负责指向本类中的成员变量。

  • this负责指向本类中的成员方法

this.add(5,3);//调用本类的add方法,this可忽略。

  • this可代替本类的构造函数。

this(5);//调用本类的一个形参的构造函数。