面向对象与面向过程:
面向对象(OOP)与面向过程 二者都是一种思想,面向对象是相对于面向过程而言的。
面向过程,强调的是功能行为。面向对象,将功能封装进对象,强调具备了功能的对象。
面向对象更加强调运用人类在日常的思维逻辑中采用的思想方法与原则,如抽象、分类、继承、聚合、多态等。
面向对象的三大特征: 封装 (Encapsulation) 、继承 (Inheritance) 、多态 (Polymorphism)。
面向对象思想概述:
程序员从执行者转化成了指挥者。
完成需求时: 先去找具有所需功能的对象来用。 如果该对象不存在,那么创建一个具有所需功能的对象。 这样简化开发并提高复用。
类(class)和对象(object)是面向对象的核心概念。
类:是对一类事物描述,是抽象的、概念上的定义。
对象:是实际存在的该类事物的每个个体,因而也称实例(instance)。
java类及类的成员:
属 性:对应类中的成员变量。
行 为:对应类中的成员方法。
类的格式:
步骤:
定义类(考虑修饰符、类名)。
编写类的属性(考虑修饰符、属性类型、属性名、初始化值)。
编写类的方法(考虑修饰符、返回值类型、方法名、形参等)。
属性:
成员变量与局部变量:
成员变量与局部变量的区别:
方法:
构造器:
构造器的重载:
对象的创建:
java类的实例化,即创建类的对象。
当一个对象被创建时,会对其中各种类型的成员变量自动进行初始化赋值。除了基本数据类型之外的变量类型都是引用类型。
创建对象的格式:
内存分析:
匿名对象:
生命周期:
博客:https://www.cnblogs.com/MOBIN/p/4853901.html
this关键字:
this的作用:
1.当形参与成员变量重名时,如果在方法内部需要使用成员变量,必须添加this来表明该变量时类成员。
2.在任意方法内,如果使用当前类的成员变量或成员方法可以在其前面添加this,增强程序的阅读性。
3.this可以作为一个类中,构造器相互调用的特殊格式。
注意:
1.使用this()必须放在构造器的首行!
2.使用this调用本类中其他的构造器,保证至少有一个构造器是不用this的。
封装:
Java中通过将数据声明为私有的(private),再提供公共的(public)方法:getXxx()和setXxx()实现对该属性的操作,以实现下述目的:
- 隐藏一个类中不需要对外提供的实现细节;
- 使用者只能通过事先定制好的方法来访问数据,可以方便地加入控制逻辑,限制对属性的不合理操作;
- 便于修改,增强代码的可维护性;
四种访问权限修饰符:
Java权限修饰符public、protected、private置于类的成员定义前,用来限定对象对该类成员的访问权限。
注意:
对于class的权限修饰只可以用public和default(缺省)。
public类可以在任意地方被访问。
default类只可以被同一个包内部的类访问。
Java三大特征:https://www.cnblogs.com/ibalintha/p/3897821.html
Java的高级特性:
1、关键字static
当我们编写一个类时,其实就是在描述其对象的属性和行为,而并没有产生实质上的对象,只有通过new关键字才会产生出对象,这时系统才会分配内存空间给对象,其方法才可以供外部调用。我们有时候希望无论是否产生了对象或无论产生了多少对象的情况下,某些特定的数据在内存空间里只有一份,例如所有的中国人都有个国家名称,每一个中国人都共享这个国家名称,不必在每一个中国人的实例对象中都单独分配一个用于代表国家名称的变量。
类属性、类方法的设计
类属性作为该类各个对象之间共享的变量。在设计类时,分析哪些类属性不因对象的不同而改变,将这些属性设置为类属性。
相应的方法设置为类方法。 如果方法与调用者无关,则这样的方法通常被声明为类方法,由于不需要创建对象就可以调用类方法,从而简化了方法的调用
2、单例设计模式:
设计模式:是在大量的实践中总结和理论化之后优选的代码结构、编程风格、以及解决问题的思考方式。设计模式就像是经典的棋谱,不同的棋局,我们用不同的棋谱,免去我们自己再思考和摸索。
所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法。如果我们要让类在一个虚拟机中只能产生一个对象,我们首先必须将类的构造方法的访问权限设置为private,这样,就不能用new操作符在类的外部产生类的对象了,但在类内部仍可以产生该类的对象。因为在类的外部开始还无法得到类的对象,只能调用该类的某个静态方法以返回类内部创建的对象,静态方法只能访问类中的静态成员变量,所以,指向类内部产生的该类对象的变量也必须定义成静态的。
饿汉式:
懒汉式:
3、初始代码块:
一个类中初始化块若有修饰符,则只能被static修饰,称为静态代码块(static block ),当类被载入时,类属性的声明和静态代码块先后顺序被执行,且只被执行一次。
举例:
4、final关键字
5、抽象类
随着继承层次中一个个新子类的定义,类变得越来越具体,而父类则更一般,更通用。类的设计应该保证父类和子类能够共享特征。有时将一个父类设计得非常抽象,以至于它没有具体的实例,这样的类叫做抽象类。
6、接口
有时必须从几个类中派生出一个子类,继承它们所有的属性和方法。但是,Java不支持多重继承。有了接口,就可以得到多重继承的效果。
接口(interface)是抽象方法和常量值的定义的集合。
从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。
实现接口类: class SubClass implements InterfaceA{ }
一个类可以实现多个接口,接口也可以继承其它接口。
接口总结:
通过接口可以实现不相关类的相同行为,而不需要考虑这些类之间的层次关系。
通过接口可以指明多个类需要实现的方法,一般用于定义对象的扩张功能。
接口主要用来定义规范。解除耦合关系。
接口与抽象类的区别:
在开发中,一个类不要去继承一个已经实现好的类,要么继承抽象类,要么实现接口。
7、内部类
内部类特征:
匿名内部类:
匿名内部类不能定义任何静态成员、方法和类,只能创建匿名内部类的一个实例。
一个匿名内部类一定是在new的后面,用其隐含实现一个接口或实现一个类。
面向对象汇总: