《java从入门到精通》个人笔记-第七章 类和对象

第七章

  1. 类是封装对象的属性和行为的载体。对象的属性以成员变量的形式定义,对象的行为是以方法的形式定义。

  2. 面向对象程序设计具有:封装性、继承性、多态性。
    封装是面向对象核心思想,将对象的属性和行为封装起来,载体就是类,类通常对客户隐藏其实现细节。
    继承利用特定对象之间的共有属性,有一种父子间的关系。
    多态即将父类对象应用于子类的特征就是多态,多态的实现依赖于抽象类和接口,在多态中,父类通常被定义为抽象类,比抽象类更方便的是将抽象类定义为接口。由抽象方法组成的集合就是接口。

  3. 一个成员方法可以有参数,这个参数可以是对象,也可以是基本数据类型的变量。成员方法的返回值可以是计算结果,也可以是其他想要的数值和对象。在成员方法中可以调用其他成员方法和类成员变量。

  4. 权限修饰符:private、public、protected。
    在这里插入图片描述
    当声明类时不使用修饰符设置类的权限,则这个类预设为包存取范围,即只有一个包中的类或子类可以调用这个类的成员变量和成员方法。类的权限设定会约束成员的权限设定。

  5. 方法中的形参也可作为一个局部变量,局部变量在方法执行时创建,在方法执行结束时被销毁。成员变量使用时可直接定义不用初始化,局部变量在使用时必须进行赋值操作或初始化。在相互不嵌套的作用域中可以同时声明两个名称和类型相同的局部变量,比如两个不嵌套的for循环。

  6. this关键字:
    (1) 用于引用本类的一个对象,其被隐式的用于对象的成员变量和方法。在局部变量或方法参数覆盖了成员变量时,就要添加this关键字明确引用的是类成员。
    (2) 作为方法的返回值。
    在这里插入图片描述
    (3) 调用类中的构造方法:只可以在无参构造方法中的第一句使用this调用有参构造方法。

  7. 构造方法:对象的创建就是通过构造方法完成的。每当类实例化一个对象时,类都会自动调用构造方法。
    特点:(1)无返回值,也不用void修饰;(2)构造方法的名称与本类的名称相同。

  8. static用于声明的变量、常量和方法被称为静态成员。静态成员属于类所有,可以在本类或其他类中调用。即它只存在于一个内存区域,new了几个对象后,无论如何操作,都是对于同一个内存单元的操作。
    语法:类名 . 静态类成员
    规定:(1)在静态方法中不能使用this关键字;(2)在静态方法中,不可以直接调用非静态方法;(3)不能将方法体内的局部变量声明为static

  9. 类的主方法:类的主方法是静态的,所以在其中调用其他方法也必须是静态的。无返回值。

  10. 对象:使用new操作符调用构造方法创建对象。在这之后可以使用“对象.类成员”来获取对象的属性和行为。
    对象的引用:对象的引用即类名.对象引用名称,并不一定需要有一个对象相关联。引用只是存放一个对象的内存地址,并非存放一个对象,严格的说,引用和对象是不同的。比如:Book book = new Book();简单的说book是Book类的一个对象,而事实上应该是book包含Book对象的一个引用。后面的new Book();才是真的建了一个对象。
    对象的比较
    (1)“==”运算符,比较的是两个对象引用的地址是否相等;
    (2)equals()方法是String类中的方法,它用于比较两个对象引用所指的内容是否相等。
    对象的销毁:被Java虚拟机视为垃圾的情况包括:(1)对象引用超过其范围;(2)将对象赋值为null。
    注意:如果对象不是通过new操作符在内存中获取一块内存区域时,可能不能被垃圾回收机制所识别。此时,java提供了finalize()方法,属于Object类,被声明为protected,用户可以在自己的类中定义这一方法,但如果定义了会先调用这个方法,下一次垃圾回收动作发生时,才真正回收被对象占用的内存。以上方法时间都不确定不受人为控制,System.gc()方法则是强制启动垃圾回收器。

提出问题:java中static、final、static final的区别?
final
final可以修饰:属性,方法,类,局部变量(方法中的变量)
final修饰的属性跟具体对象有关,在运行期初始化的final属性,不同对象可以有不同的值,初始化后不能被改变。。
final修饰的属性表明是一个常数(创建后不能被修改)。
final修饰的方法表示该方法在子类中不能被重写,final修饰的类表示该类不能被继承。

static
static可以修饰:属性,方法,代码段,内部类(静态内部类或嵌套内部类)
static修饰的属性的初始化在编译期(类加载的时候),初始化后能改变。
static修饰的属性所有对象都只有一个值,指向同一内存地址。
static修饰的属性、方法、代码段跟该类的具体对象无关,不创建对象也能调用static修饰的属性、方法等
static和“this、super”势不两立,static跟具体对象无关,而this、super正好跟具体对象有关。
static不可以修饰局部变量。

static final和final static
static final和final static没什么区别,一般static写在前面。

static final
static修饰的属性强调它们只有一个,final修饰的属性表明是一个常数(创建后不能被修改)。static final修饰的属性表示一旦给值,就不可修改,并且可以通过类名访问。
static final也可以修饰方法,表示该方法不能重写,可以在不new对象的情况下调用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值