- 浏览: 150242 次
- 性别:
- 来自: 成都
最新评论
-
zhuguopei_java:
return name.equals(p.name()) &a ...
1、集合练习 -
392214559:
引用
1、数据结构与算法
文章列表
一、理解
设计模式是解决某一类问题最行之有效的方法
设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。
使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。
毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。
二、java中有23种通用设计模式
主要分为三个类型:创建型模式、结构型模式、行为型模式
一、异常
就是程序在运行时出现不正常的情况
异常由来:问题也是现实生活中一个具体的事物,也可以通过java的类的形式进行描述,并封装成对象
所以,异常其实就是java对不正常情况进行描述后的对象体现
二、好处
将问题进行封装
将正常流程代码和问题处理代码相分离,方便于阅读
三、问题有两种
1,严重的问题:java通过Error类进行描述
一、Object
是所有对象的直接或者间接父类,该类中定义的肯定是所有对象都具备的功能
是类层次结构的根类。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。
二、Object类详解
public c ...
一、内部类
将一个类定义在另一个类的里面,对里面那个类就称为内部类(内置类,嵌套类)
二、理解
当描述事物时,事物的内部还有事物,该事物用内部类来描述,因为内部事物在使用外部事物的内容
如:
class Body//身体
{
private class Heart//心脏
{
//.......
}
}
三、特点
一、多态
某一类事物的多种形态
体现:父类或者接口的引用指向或者接收自己的子类对象。。如:动物 y = new 猫
作用:多态的存在提高了程序的扩展性和后期可维护性
前提:1,需要存在继承或者实现关系 2,要有覆盖操作
弊端:虽然提高了扩展性,但是只能使用父类的引用访问父类中的成员
多态自始至终都是子类的对象在做着变化
二、特点
多态调用: 父类 f = new 子类();
成员函数:在多态调用时,编译看左边,运行看右边
成员变量:无论编译和运行中,都参考左边(引用型变量所属的类)
一、接口
Java中的接口是一系列方法的声明,是一些方法特征的集合。
一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。
是用关键字interface定义的
可以认为是一个特殊的抽象类
当抽象类中的方法都是抽象的,那么该类可以通过接口的形式来表示
二、接口中包含的成员
最常见的有全局常量、抽象方法。
都是public的
注意:接口中的成员都有固定的修饰符
成员变量:public static final
成员方法:public abstract
如果public static fi ...
一、抽象类(abstract)
当多个类中出现相同功能,但是功能主体不同,这时可以进行向上抽取,只抽取功能定义,而不抽取功能主体
二、抽象方法所在类一定要标示为抽象类,也就是说该类需要被abstract关键字所修饰
三、abstract可以修饰类和方法不能修饰变量
四、抽象类特点
抽象方法一定在抽象类中
抽象方法和抽象类都被abstract修饰
抽象类不能new对象,因为调用抽象方法没有意义
抽象类中的方法要被使用,必须由子类覆盖其所有的抽象方法后,建立子类对象调用。
如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类(即强迫子类 ...
一、继承(extends)
Java继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。
二、好处
提高了代码的复用性,能够大 ...
一、创建一个Person对象
Person p = new Person("张三",25);
二、创建一个Person对象都做了些什么事情?
因为new用到了Person.class,所以会先找到硬盘上的Person.class文件并加载到内存中
执行该类中的static代码块,如果有的话,给Person.class类进行初始化
在堆内存中开辟空间,分配内存地址
在堆内存中建立对象的特有属性。并进行默认初始化
对属性进行显示初始化
对对象进行构造代码块初始化
对对象进行对应的构造函数初始化
将内存地址赋给栈内存中的p变量(p ...
一、static关键字
static是一个修饰符,用于修饰成员(成员变量和成员函数)
二、被修饰后的成员具备以下特点
随着类的加载而加载,也就是说:静态会随着类的消失而消失。说明它的生命周期最长
优先于对象存在,明确一点:静态是先存在的,对象是后存在的
被所有对象所共享
可以直接被类名调用
三、使用注意
静态方法只能访问静态成员,因为静态方法加载时,优先于对象存在,所以没有办法访问对象中的成员
静态方法中不可以写this,super关键字,理由同上
主函数是静态的
四、实例变量和静态变量的区别
成员变量所属于对象。所以也称 ...
一、理解
this代表本类的对象,即所在函数所属对象的引用
简单说:哪个对象在调用this所在的函数,this就代表哪个对象
二、用法
用于区分同名变量
用于构造函数间相互调用时只能用this(),并且要放在构造函数的第一行,因为构造函数是用于初始化的,所以初始化动作一定要执行。否则编译失败
在定义功能时,如果该功能内部使用到了调用该功能的对象,这时就用this来表示这个对象
三、示例
class PersonDemo
{
public static void main(String[] args)
{
Person p = ...
一、构造函数
分析事物时,发现具体事物一出现,就具备了一些特征,那就将这些特征定义到构造函数内
二、特点
函数名与类名相同
不用定义返回值类型
不可以写return语句
三、作用
给对象进行初始化
四、注意
一个类在定义时,如果没有定义过构造函数,那么该类中会自动生成一个空参数的构造函数,方便该类创建对象,完成初始化。
如果在类中自定义了构造函数,那么默认的构造函数就没有了。
多个构造函数是以重载的形式存在的
记住:所有对象创建时,都需要初始化才可以使用。
五、构造函数与一般函数的区别
一、封装(Encapsulation)
是指隐藏对象的属性和实现细节,仅对外提供公共访问方式
二、好处
将变化隔离
便于使用
提高重用性
提高安全性
三、封装原则
将不需要对外提供的内容都隐藏起来
把属性都隐藏,提供公共方法对其访问
四、private权限修饰符
用于修饰类中的成员(成员变量,成员函数)
私有只在本类中有效
将成员变量(Xxx)私有化,对外提供对应的setXxx,getXxx方法对其进行访问。
提高对数据访问的安全性。
可以在访问方式中加入逻辑判断等语句,对访问的数据进行操作,提高代码健壮性
一、类和对象的关系
可以理解为:图纸对应类,汽车对应堆内存中的对象
二、详解
类:就是对现实生活中事物的描述
对象:就是这类事物实实在在存在的个体
三、怎样定义类
描述事物其实就是在描述事物的属性和行为
属性对应类中的变量,行为对应类中的函数(方法)
其实定义类,就是在描述事物,就是在定义属性和行为
属性和行为共同成为类中的成员(成员变量和成员方法)
四、成员变量和局部变量的区别
作用范围:成员变量作用于整个类中。局部变量作用于函数或者语句中
内存中的位置:成员变量在堆内存中,因为对象的存在。而局部变量存在于栈内存中
五、 ...
一、面向对象理解
面向对象是相对面向过程而言
面向对象和面向过程都是一种思想
面向过程:强调的是功能行为
面向对象:将功能封装进对象,强调具备了功能的对象
面向对象是基于面向过程的
二、好处
将复 ...