java学习笔记----java基础06:类和对象

1.类的概念

  • 类是对具有相同属性和相同行为的对象的抽象。
  • 类表示了对象的类别是一种自定义的数据类型;是开发人员为解决实际问题而自己定义的。
  • 类是创建对象的模板和类型,对象是类的实例。
  • 注意:一个java文件里可以写多个类 ,但是其中只能有一个类用public 修饰,并且这个java文件的名称必须用这个public类的类名命名。
  • 注意:类的对象的属性都是先赋值后使用的,如果没有赋值就直接使用对象的属性:如果该属性是引用数据类型,其初始默认值为null;如果该属性是int型,其初始默认值为0。

2.java面向对象有哪些基本特性

面向对象有三大基本特性:封装、继承和多态。如果有四个的话,就再加上抽象。

  • 封装就是将抽象得到的属性和行为结合起来,形成一个有机的整体,也就是类。类里面的一些属性和方法需要隐藏起来,不希望直接对外公开。但同时提供外部访问的方法来有限制地访问需要隐藏的属性和方法。
  •  继承是使用已存在的类 的定义作为基础建立新类的技术,新类的定义可以增加新的属性或新的方法,也可以用已存在的类的属性和方法。
  • 多态是指通过父类型的变量引用不同的子类对象(也就是说子类对象可以直接赋值给父类型变量,来动态调用在不同子类中实现的方法。Java引用变量有两种类型,分别是编译时类型和运行时类型,编译时类型由声明类型决定,运行时类型由赋值对象的类型决定。如果编译时类型和运行类型不一致,就会出现所谓多态。
  • 将现实世界中的事物描述为系统中的类、对象及方法的过程,在这个过程中去除了不相关数据和信息,保留的数据用来实现系统特定的功能。                                                                        

3.构造方法

  •  构造方法的方法名必须与类名相同。
  • 构造方法没有返回类型,也不能定义为void ,在方法名前不声明返回类型。其实构造方法是有返回值的,返回的是刚刚被初始化完成的当前对象的引用。但是为了和普通方法进行区别,java设计人员规定构造方法不写返回值,编译器会通过这一规定识别构造方法,而不是说构造方法真的没有返回值。
  • 构造方法会通过参数个数、参数类型、参数排列顺序来区分不同的构造方法。
  • 如果在定义类时没有定义构造方法,则编译系统会自动插入一个无参数的默认构造方法,这个构造方法不执行任何代码。但是如果在类定义了有参的构造方法,没有显式地定义无参的构造方法,那么在使用构造方法创建类的对象时,则不能使用默认的无参构造方法,如果实在要用的话,必须显式的定义无参的构造方法。

 4.静态与非静态成员的访问总结

(1)静态方法与非静态方法的使用

  • 静态的东西总是通过类名直接访问,无须通过对象来调用。当然通过对象访问静态成员也是可以的,但不推荐这样用。
  • 非静态成员的东西总是和对象相关联,也就是说非静态成员总通过对象来访问。
  • 静态成员不可以访问非静态成员,反之非静态成员可以访问静态成员。

(2)什么时候用静态,什么时候用非静态?

  • 静态方法在类加载到JVM时生成内存,并分配了相应的入口地址。实例方法在程序运行中生成内存,当我们创建第一个对象时,类中的实例方法就分配了入口地址,当再创建对象时,不再分配入口地址,也就是说,方法的入口地址被所有的对象共享,当所有的对象都不存在时,方法的入口地址才被取消。所以静态方法可以直接调用
  •  实例方法要先生成实例,通过实例调用方法,静态速度很快,但是多了会占内存。
  • 静态内存是连续的,因为是在程序开始时就生成了,而实例申请的是离散的空间,所以当然没有静态方法快,而且静态内存是有限制的,太多了程序会启动不了。
  •  类方法常驻内存,实例方法不是,所以类方法效率高但占内存。
  •  类方法在堆上分配内存,实例方法在堆栈上。 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章