[零基础学JAVA]Java SE面向对象部分.面向对象基础(01)

在对象的内存分配上与c++有区别:

C++:
#include <iostream>
#include <string>

class Person{
    private:
        std::string name;
        int age;

    public:
        void  setAge(int age){
            this->age = age;
        }
        
        void setName(std::string name){
            this->name = name;
        }

        int getAge(){
            return this->age;
        }

        std::string getName(){
            return this->name;
        }
};


int main(){


    Person per;

    per.setAge(10);

    std::cout<<per.getAge()<<std::endl;

    return 0;
}
java:
class Person{
    private int age;
    private String name;


    void setAge(int age){
        this.age = age;
    }

    void setName(String name){
        this.name = name;
    }

    int getAge(){
        return this.age;
    }

    String getName(){
        return this.name;
    }
}

public class ObjectTest{

    public static void main(String args[]){

        Person per = null;
        per = new Person();

        per.setAge(10);
        
        System.out.println(per.getAge());

    }
}
 
程序详解:
1、定义好一个类
2、为定义好的类实例化对象
· 声明对象:在栈内存中开辟空间
· 实例化对象(为一个对象开辟空间),使用关键字new完成。只要有new关键字就表示在堆内存中开辟空间,在堆内存中保存各个对象的属性。而方法是保存在全局代码区里面滴。
image
3、通过对象.属性为类中的属性赋值,通过对象.方法()调用类中的方法。
image
我们发现,如果我们没有对对象开辟堆内存空间的话,程序执行会报NullPointerException错哈~,如果我们发现出现这个错误,我们排错时就检查对象有没被实例化。
image
NullPointerException : 空指向异常,只要是没有堆内存引用的对象,直接调用对象访问属性或方法的时候都会出现空指向异常。此异常会伴随你的开发人生。

总结:

1、类与对象的关系

java:

 一个文件中只能有一个public类,此对类名要跟文件名一致。

默认类中属性public;无析构函数。

C++:Struct 默认public,Class默认private;

· 类是对象的模板,对象是类的一个实例
2、对象的创建

c++:可栈,可堆,带指针!

java:无指针,栈中分配内存无效,必须要在堆中分配

·声明对象:在栈内存中声明;类名称 对象名称 = null ;
·实例化对象:使用new在堆内存中开辟空间,保存属性;对象名称 = new 类名称() ;
3、对象的引用传递
4、垃圾的产生。

 
原文地址:https://www.cnblogs.com/zhangsf/p/3330027.html