面向对象(下)知识点

  1. 指针:指向某个内存地址的变量。它有两个属性:地址值和指针类型。

    空指针:不指向任何内存地址的指针。

    指针类型可告诉编译器应该怎样进行接下来的数据访问。int类型和float类型就不是一样的。举个例,如:Cat cat = null;就告诉了cat变量是cat类型,则编译器会让cat变量去访问Cat类型数据;也即相当于在声明变量时完成了Cat类型的初始化,所以即使是Cat cat = null;这种情况,cat变量也能访问到到Cat类的静态成员,而不会报空指针,如果去访问Cat类的普通成员,则会报空指针,因为普通成员必须要在new之后才存在于堆内存中的。所以,我们可以说null是一个只有类成员的对象(万物皆对象)。

    还有一个解释:在Java里,对象调用类成员时,实际上是委托类本身来调用的,所以null对象能调用类成员而不报空指针。

  2. 基本数据类型用”==”判断值是否相等

    两个引用变量用”==”判断引用变量存的地址值是否相等,”==”不能用于比较类型上没有父子关系的两个对象,那样会报错。

    equals()方法是Object类的方法,它规定与自身作比较才相等(即两个对引用变量指向的是同一个对象才相等)。可通过重写它自定义相等规则。如引用类型String类的equals()方法就是重写Object类的equals方法,它的规定是:只要内容相等或是与对象本身作比较就相等。

    Java用常量池管理曾经用过的字符串,执行String str = “java”; 时,常量池就会缓存一个”java”,若再执行String s =”java”;则系统会直接让s指向之前缓存的java,所以str与s共用一个对象,因此str == s 的结果为true;

  3. 关于final
    1. final修饰的成员变量必须显示赋值,不然该成员变量失去了存在的意义。
    2. final修饰的类变量,要么在静态块中赋值,要么在声明时就赋值。
    3. final修饰的实例变量,要么在普通初始化块和构造器中赋值,要么在声时就赋值。
    4. final修饰的类不可被继承,修饰的方法不可被重写,但可被重载。
    5. 宏变量:被final修饰且在定义时就赋好初值的变量。编译时,会将所有用到宏变量的的地方都直接替换成该变量的值。示例:
    //1.声明非宏变量
    String  a = "ja";
    String  b = "va";
    System.out.print(a+b == "java");//结果为false

    //2.声明宏变量
    final String a = "ja";
    final String b = "va";
    System.out.print(a+b == "java");//结果为true
    //这里的a、b是宏变量,所以会直接替换成它的值,所以此时的a+b直接就是"java"。
  1. 关于抽象类

    1. 抽象类不能被实例化,主要用于被继承;抽象方法主要用被重写。抽象类示例:public abstract class A{}

    2. static与abstract不能同时修饰方法,但可同时修饰内部类。

  2. 关于接口

    1. 与抽象类和普通类的单继承多实现不同,接口可多继承多实现

    2. 接口体现的是规范与实现相分离的设计哲学,抽象类体现的是一处模板式设计。

    3. 接口不能包含初始化块、构造器、普通成员变量、普通方法,而抽象类均可包含,且能全是普能方法。

    4. 接口的所有成员都用public 修饰。

    5. 接口的成员变量必须用public static final 修饰,不指定时默认是它们。

    6. 接口中的方法必须是public abstract 修饰, 不指定时默认是它们。

  3. 内部类

    如何使用:Out.Int in = new Out().new Int(); //in就代表内部类Int的实例对象。

  4. 匿名内部类
    1. 如果一个接口的实现类须使用多次,则定义成独立类,但只使用一次时,则应该定义成匿名内部类。
    2. 匿名内部类里不能定义构造器,但可以定义初始化块来完成需要构造器完成的事。
    3. 匿名内部类格式:new 接口(或类){ 重写 },只需要重写一次某个类的方法时,可使用匿名类内部类。
    4. 匿名内部类访问的外部局变量默认是final修饰的。
  5. 缓存原理

    需要重复访问的数据,如果在数据库或硬盘等外部系统中,则访问获取时会很慢,如果把这些数据缓存到内存里,每次获取先看缓存里有没有,有就直接取,没有就从外部系统中获取后放到缓存里,以供下次直接从缓存里取。

    注:如果Integer采用Integer.valueOf(99)创建对象,则会缓存该对象,即99会放进缓存里。Integer只缓存 -128~127之间的对象。

时间: 2024-08-04 23:49:09

面向对象(下)知识点的相关文章

面向对象软件工程知识点

面向对象软件工程知识点  1.封装是指把对象的(A)结合在一起,组成一个独立的对象. A.属性和操作 B.信息流 C.消息和事件 D.数据的集合 2.状态图和活动图建立了UML面向对象开发过程中的对象动态(B)模型. A.交互      B.状态       C.体系结构     D.软件复用 3.UML的(C)模型图由活动图.顺序图.状态图和合作图组成. A.用例 B.静态 C.动态 D.系统 4.在UML的需求分析建模中,对用例模型中的用例进行细化说明应使用(A). A.活动图     B.

PHP面向对象关键知识点回顾

一,类中的析构函数(__destruct): 析构函数是自动调用的 析构函数主要用于销毁资源 析构函数的调用顺序是先创建的对象最后被销毁(原理是栈的先进后出) 析构函数什么时候被调用 (1)当程序(进程结束)推出时 (2)当一个对象成为垃圾对象时候,该对象的析构方法也会被调用 (3)所谓垃圾对象,就是指没有任何变量再引用它(没有变量再只指向堆中的对象) (4)一旦对象成为垃圾对象,析构函数就会立即被调用 二,类中使用静态变量(static) 静态变量的引入是为了解决不同的对象实例能够共享同一个变

黑马程序员——Java基础---面向对象(下)

一.概述 面向对象除了封装.继承和多态三大特征之外,还有其他的特性,例如abstract抽象.interface接口等,抽象类主要作为多个类的模板,而接口则定义了多类应该遵守的规范,final关键字让java实现不可变类,让系统更加安全. 二.正文 1.构造器和初始化块 1.1 构造器 构造器是一种特殊方法,这个特殊方法用于创建实例时执行初始化,是创建对象的重要途径,如果程序员没有为JAVA类提供任何构造器,则系统会为这个类提供一个无参数的构造器,这个构造器的执行体为空,不做任何事情.无论如何,

黑马程序员-Java面向对象下《二》

                         ------- android培训.java培训.期待与您交流! ---------- 1.继承的概念 面向对象的特点之一,可以实现对类的复用.可以通过以下两种方法实现 a.合成/聚合关系(包含其他类):将一个类当作另一个类的属性. b.派生类:一个类继承另一个类,实现继承的类称为派生类,被继承类称为父类,基类,超类. 父类的成员方法和成员变量被子类继承,但是父类的构造方法没有被继承. 在Java中只支持单继承,和C++多继承不一样. 2.sup

java面向对象编程知识点总结

一:今天完成 上午详细了解了java面向对象编程的一些细节,记录如下. 1)类 是一种引用类型,包含一个签名和一个主体,主体是放在花括号里面的成员,成员包括字段和方法,还有构造方法.初始化程序和嵌套类型. 常用成员有四种:类字段.类方法.实例字段.实力方法. 其它引用类型还包括数组.接口.枚举和注解. 2)字段和方法 示例:一个简单的类和成员 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 public class Circle{

php面向对象基础知识点总结

下面是一些PHP面向对象基础知识的摘录,摘录内容来自PHP5.1手册. 1.类的变量成员叫做“属性”,或者叫“字段”.“特征”,在本文档统一称为“属性”. 2.属性中的变量可以初始化,但是初始化的值必须是常数,这里的常数是指php脚本在编译阶段时就为常数,而不是 在编译阶段之后在运行阶段运算出的常数. 3.在类的成员方法里面,可以通过$this->property(property是属性名字)这种方式来访问类的属性. 方法,但是 要访问类的静态属性或者在静态方法里面却不能使用,而是使用self:

Python 面向对象(下)

本篇博客承接自Python 面向对象(上) 四. 继承,实现,依赖,关联,聚合,组合 待补充 参考资料: https://www.cnblogs.com/chinxi/p/7349768.html 五. 特殊成员 待补充 参考资料: 类中的特殊成员方法 待补充 参考资料: https://www.cnblogs.com/chinxi/p/7349768.html 五. 特殊成员 待补充 参考资料: 类中的特殊成员方法 六. issubclass,type,isinstence各自的用法和区别 1

面向对象<高级>知识点

继承: 通过子类继承父类扩展父类的功能 通过接口继承多个接口扩展接口的功能 通过抽象类实现接口扩展抽象类的功能 多态: 主要体现: 1.方法的重载与覆写  2.对象的多态性:a)向上转型:父类 父类对象 = 子类实例 ----------调用子类的覆写后的方法   b)向下转型:子类 子类对象=(子类)父类实例 3.发生向下转型前必须先发生向上转型以保证有父子类关系 设计模式: 工厂设计: 代理设计:通常代理的存在是扩展真实操作的作用 适配器设计:一个接口有10个方法,我只需要5个,可以创建一个

java基础学习_面向对象(下)01_day08总结

==========================================================================================================================================================涉及到的知识点有:1:继承(掌握) (0)Java继承概述 (1)继承定义 (2)Java中如何表示继承呢?格式是什么呢? (3)继承的好处 (4)继承的弊端 A:让类的耦合性增强.这样某个类

【关于正则表达式的特殊符号的处理】之前自己在提取一个表达式一直提取不到,后来解决了,记录下知识点

1.开始的表达式:"drugLicenseCompanyperson":[{"pk":"(.*?)" 2.修改后的表达式:"drugLicenseCompanyperson":\[\{"pk":"(.*?)" 这里就是对 [ 和{ 这样的符号未做处理 ------------------------来自菜鸟教程-------------------------------- 特殊字符 所