读大话设计模式记录

1.设计模式概述

java错误:

  1. 语法错误:编码不符合java规范,在编译得时候无法通过。
  2. 逻辑错误:程序可以顺利得编译,但是执行得出得结果不符合预期;

2.类、对象、方法和实例变量、继承、接口

  1. 类:是一种模板,是对一组事物得抽象,是对事物得特性和功能得描述。比如女孩、男孩就是两个类。
  2. 对象:是类的实例,即类的一个变量。比如一个女孩或者男孩就是一个对象;
  3. 方法:是实现对象所具有的功能操作的代码,体现了对象的一种行为能力;比如女孩吃饭;
  4. 实例变量:是某一实例(某一对对象)具有的状态;比如这个女孩头发是黑色的;
  5. 继承:是指一个对象直接使用另一个对象的属性和方法;
  6. 接口:接口定义了对象必须实现的方法,其目的就是让这些方法可以作为接口实例被引用。接口不能实例化。类可以实现多个接口并且通过这些实现的接口被索引。

继承的特性

  1. 子类拥有父类非 private 的属性、方法;
  2. 子类可以拥有自己的属性和方法,即子类可以父类进行扩展;
  3. 子类可以用自己的方式实现父类的方法;
  4. java 的继承是单继承,但是可以多重继承,单继承就是一个子类只能继承一个父类,例如A类继承B类,B类继承C类,所以按照关系就是C类是B类的父类,B类是A类的父类,这是Java继承区别于C++的一个特性;
  5. 提高了类之间的耦合性(继承的缺点,耦合度高就会造成代码之间的联系越紧密,代码独立性越差);

继承关键字 extends 和 implements

  1. extends 关键字 只能继承一个类,也就是类的继承是单一继承。
  2. implements 关键字可以变相的使 java 具有多继承的特性,使用范围为类继承接口的情况,可以同时继承多个接口 (接口之间采用逗号分隔);

super 和 this 关键字

  1. super 关键字:我们可以通过super 关键字来实现对父类的成员的访问,用来引用当前对象的父类;
  2. this 关键字:指向自己的引用;

final 关键字

final 关键字声明类可以把类定义为不能继承的,即最终类;或者用于修饰方法,该方法不能被子类重写;

构造器

子类是不能继承父类的构造器(构造方法或者构造函数)的,它只是调用(隐式或显式)。
如果父类的构造器带有参数,则必须在子类的构造器中显示的通过 super 关键字调用父类的构造器并配以适当的参数列表。
如果父类构造器没有参数,则在子类的构造器中不需要使用 super 关键字调用父类的的构造器,系统自动调用父类的无参构造器。

Java 重写(Override)与重载(Overload)

  1. 重写:重写是子类对父类的允许访问的方法的实现过程进行重新编写,返回值和形参都不能改变。即外壳不变,核心重写。
    好处: 子类能够根据需要实现父类的方法;
  2. 重载是在一个类里面方法名相同,而参数不同。返回类型可以相同也可以不相同。
    每个重载的方法或者构造函数都必须有一个独一无二的参数类型列表。
    最常用的地方就是构造器的重载。
  3. 重载规则:
    1. 被重载的方法必须改变参数列表(参数个数或类型不一样);
    2. 被重载的方法可以改变返回类型;
    3. 被重载的方法可以改变访问的修饰符;
    4. 被重载的方法可以声明新的或更广的检查异常;
    5. 方法能够在同一类中或者在一个子类中被重载;
    6. 无法以返回值类型作为重载函数的区分标准;

区别
4. 方法重载是一个类中定义了多个方法名相同,而他们的参数列表不同,则称为方法的重载;
5. 方法重写是在子类存在方法与父类的方法的名字相同,而且参数的个数与类型一样,返回值也一样的方法,称为重写;
6. 方法重载是一个类的多态性表现,而方法重写是子类与父类的一种多态性表现。

多态

多态是同一事件发生在不同对象上会产生不同的结果。
多态就是同一个接口,使用不同实例而执行不同操作。
多态的有点

  1. 消除类型之间的耦合关系;
  2. 可替换行;
  3. 可扩充性;
  4. 接口性;
  5. 灵活性;
  6. 简化行;

多态存在的三个必要条件
7. 继承
8. 重写
9. 父类引用指向子类对象

Java 封装

封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。;
封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。
封装的优点

  1. 良好的封装能够减少耦合度;
  2. 类内部的结构可以自由修改;
  3. 可以对成员变量进行更精确的控制;
  4. 隐藏信息,实现细节 ;

实现 Java 封装的步骤

  1. 修改属性的可见性来限制对属性的访问(一般限制为private);
  2. 对每个值属性提供对外的公共方法访问,也就是创建一对赋取值方法,用于对私有属性的访问。

public class Person{
    private String name;
    private int age;public int getAge(){
      return age;
    }public String getName(){
      return name;
    }public void setAge(int age){
      this.age = age;
    }public void setName(String name){
      this.name = name;
    }
}

采用 this 关键字是为了解决实例变量(private String name)和局部变量(setName(String name)中的name变量)之间发生的同名的冲突。

Java 接口

接口,在 Java 编程语言中是一个抽象类型,是抽象方法的集合,接口通常以 interface 来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。
接口并不是类。类描述对象的属性和方法。接口则包含类实现的方法。
接口无法被实例化,但是可以被实现。一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。

接口有以下特性:

接口是隐式抽象的,当声明一个接口的时候,不必使用abstract关键字。
接口中每一个方法也是隐式抽象的,声明时同样不需要abstract关键字。
接口中的方法都是公有的。

Java 包

包的作用

  1. 把功能相似或相关的类或接口组织在同一个包中,方便 类的查找和使用。
  2. 如同文件夹一样,包也采用了树形目录的存储方式。同一个包中类的名字是不同的,不同的包中的类的名字是可以相同的,当同时调用两个不同包中相同类名的类时,应该加上包名加以区别。因此,包可以避免冲突。
  3. 包也限定了访问权限的类才能访问某个包中的类。

Socket 编程

套接字使用TCP提供了两台计算机之间的通信机制。客户端程序创建一个套接字,并尝试连接服务器的套接字。
当连接建立时,服务器会创建一个 Socket 对象。客户端和服务器现在可以通过对 Socket 对象的写入和读取来进行通信。
java.net.Socket 类代表一个套接字,并且 java.net.ServerSocket 类为服务器程序提供一种来监听客户端,并与他们建立连接的机制。

一下步骤在两台计算机之间使用套接字建立TCP连接时会出现:

  1. 服务器实例化一个 ServerSocket 对象,表示通过服务器上的端口通信。
  2. 服务器调用 ServerSocket 类的 accept() 方法,该方法将一直等待,知道客户端连接到服务器上给定的端口。
  3. 服务区正在等待时,一个客户端实例化一个 Socket 对象,指定服务器名称和端口号来请求连接。
  4. Socket 类的构造函数试图将客户端连接到指定服务器和端口号。如果通信被建立,则在客户端创建一个 Socket 对象能够与服务器及进行通信。
  5. 可在服务器端,accept() 方法返回服务器上一个新的 socket 引用,该 socket 连接到客户端的 socket。

你可能感兴趣的:(读大话设计模式记录)