Java知识点汇总1
面向对象
“万物皆对象”怎么理解?
面向过程:强调的是功能行为,以函数为最小单位,考虑怎么做;
面向对象:强调了具备了功能的对象,以类/对象为最小单位,考虑谁来做。
任何资源、变量等都可以看成是对象,每个对象都有自己的状态特征和行为特征,即属性和方法,面向对象思想是指在编程过程中,通过对象之间行为的交互来解决问题。
以类的形式组织代码,以对象的形式封装数据;
类与对象
类是很多个具有相同属性和行为特征的对象所抽象出来的,对象是类的实例化;
总结:类是对象的抽象,对象是类的实例;
类的三大特征:
封装性:隐藏对象内部的复杂性,只对外公开简单的接口。便于外界调用,从而提高系统的可扩展性、可维护性。
实现:属性的权限修改为private,并且创建getXxx()/setXxx()方法,用于调用private的属性(一般是类的成员变量);
优点:
我们程序设计追求“高内聚,低耦合”。
①. 高内聚:类的内部数据操作细节自己完成,不允许外部干涉;
②. 低耦合:仅对外暴露少量的方法用于使用;
③. 更加安全;
继承性 :子类可以继承父类的属性和方法,并能拓展新的属性和方法;
特点:java中类具有单继承性:一个类只能有一个直接父类,但一个类可以被多个子类继承;
优点:
①. 减少了代码的冗余,提高了代码的复用性,从而提高软件开发效率;
②. 便于功能扩展;
3.多态的前提;
tips: 一旦子类A继承父类B之后,A就获取了B中声明的所有结构:属性、方法;
注:父类中声明为private的属性或方法,子类继承父类后,仍然认为获取了父类中的私有结构
只是因为封装性原因,使得子类不能直接调用父类的结构。
多态性(Polymorphism):父类或接口定义的引用变量可以指向子类/具体实现类的实现对象。
①. 子类继承父类并重写父类中已有的方法;
②. 父类引用指向子类对象,相同的引用调用同一个方法会根据子类对象的不同而表现出不同的行为;
③. 向上转型;
①. 应用程序不必为每一个派生类编写功能调用,只需对基类进行处理,提高代码的复用性;
②. 父类引用可以调用不同子类的功能(向后兼容),提高了代码的扩展性和可维护性;
编译时多态 (方法的重载overload)
运行时多态(方法的重写override)
Java引用变量有两个类型:编译时类型和运行时类型。编译时类型由声明该变量时使用的类型决定,运行时类型由实际赋给该变量的对象决定。
若编译时类型和运行时类型不一致,就出现了对象的多态性。
总结:编译看左边(父类的引用),运行看右边(子类的对象)
重载与重写
重载:功能类似的方法,可以使用相同的方法名来定义不同功能的方法;在同一个类中,允许存在一 个以上的同名方法,只要它们的参数个数或者参数类型不同即可。
①. 与返回值类型无关,只看参数列表,且参数列表必须不同。(参数个数或参数类型)。
②. 调用时,根据方法参数列表的不同来区别。
JVM会根据参数类型、个数、顺序等找到相对应的方法并运行;
重写 : 子类继承父类之后,可以对父类中同名同参数的方法,进行覆盖操作;
权限修饰符 返回值类型 方法名(形参列表)throws 异常的类型{}:
①. 子类重写的方法的方法名和形参列表与父类中被重写的方法名和形参列表相同
②. 子类重写的方法的权限修饰符>=父类被重写方法的权限修饰符
特殊情况:子类不能重写父类中private的方法;
①. 父类被重写的方法的返回值类型void,子类也必须是void
②. 父类:A类(Object) 子类:A类/A类的子类(String)
③. 父类:基本数据类型(double) 子类:相同的基本数据类型(double)
tips:
子类和父类中的同名同参数的方法要么都static(不是重写),要么都非static(考虑重写)
static方法是随着类的加载而加载的,不能被覆盖/重写
eg:
对于多态的调用:成员变量/静态方法看左边, 方法看右边。
重载与重写的区别:
1.从编译和运行的角度看:
重载,是指允许存在多个同名方法,而这些方法的参数不同。编译器根据方法不同的参数表,对同名方法的名称做修饰。对于编译器而言,这些同名方法就成了不同的方法。它们的调用地址在编译期就绑定了。Java的重载是可以包括父类和子类的,即子类可以重载父类的同名不同参数的方法。
所以:对于重载而言,在方法调用之前,编译器就已经确定了所要调用的方法,这称为 “早绑定” 或 “静态绑定”;
而对于多态,只有等到方法调用的那一刻,解释运行器才会确定所要调用的具体方法,这称为 “晚绑定” 或 “动态绑定”。
数组
二维数组
规定:二维数组分为外层数组的元素,内层数组的元素:
数组元素的默认初始化值
二维数组有两种默认初始化:
针对于初始化方式一:int[][] arr = new int[4][3];
外层元素的初始化值为:地址值
内层元素的初始化值:与一维数组初始化情况相同
针对于初始化方式二:double[][] arr2 = new double[4][];
外层元素的初始化值为:null,指针指向的地址没有值;
内层元素的初始化值:不能调用,否则空指针异常,指针没有初始化值代表指针没有指向任何东西,为空。
形参传递机制
方法的形参的传递机制:值传递;
匿名对象
this关键
使用情况
this调用属性/方法
eg1:
eg2:
class Person{private int age;private String name;public void setName(String name){ //形参名和属性名相同,会覆盖成员变量// name = name; 就近原则this.name = name;} }this调用构造器
总结
以上是生活随笔为你收集整理的Java知识点汇总1的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 通过JS和CSS,实现网页加载中的动画效
- 下一篇: 数据结构之优先队列--二叉堆(Java实