Java基础学习之-07

来源:互联网 发布:计价软件试用版 编辑:程序博客网 时间:2024/06/06 19:30
1.单例设计模式
含义:让一个类永远只产生一个对象
恶汉式:
1.私有化构造函数
2.创建一个私有的静态的最终的本类对象
3.提供一个公共的静态的返回值类型为本类对象的一个方法
懒汉式:
1.私有化构造函数
2.声明一个私有的静态的本类对象引用变量
3.提供一个公共的静态的返回值类型为本类对象的一个方法,在方法体内部会判断当前的变量引用是否为null,如果为null则创建本类的对象,如果不为null则直接返回

开发中使用恶汉式较多,因为恶汉式是线程安全的


2.多态:某一个事物,在不同的环境中表现出来的不同的状态
多态的前提和体现:
有继承关系
父类的引用只想子类的对象
子类中重写父类中的方法
成员访问特点:
成员变量:编译看左边,运行看左边
成员方法:编译看左边,运行看右边
静态的方法:编译看左边,运行看左边(所以说静态方法不能算是方法的重写)


多态的好处和弊端:
好处:提高代码的可维护性、提高程序的扩展性
弊端:不能访问子类的特有功能(但是可以通过多态的向下转型来实现)

多态的转型:
向上转型
从子到父
父类引用指向子类对象
向下转型
从父到子
父类引用转为子类对象
3.抽象类:
父类中仅仅给出方法的声明,没有给出具体的实现,需要具体的子类来进行实现的方法就是抽象方法,有抽象方法的类一定是抽象类
抽象类定义格式:
abstract class 类名
抽象方法的定义格式:
修饰符 abstract 返回数据类型 方法名();public abstract void eat();
抽象类的成员特点:
成员变量:可以使变量,也可以是常量
构造方法:有构造方法,但是不能实例化,用于子类初始化时可能用到父类的东西,这时父类需要初始化
成员方法:可以有抽象(限定子类必须完某些动作),也可以有具体方法
抽象类特点:
抽象类不一定有抽象方法,但是一个类有抽象方法一定是抽象类
不能实例化,按照多态的方式,由具体的子类实例化。其实这也是多态的一种,抽象类多态。
抽象类的子类,要不就是抽象类,要不就是实现了父类中所有的抽象方法
4.接口:
定义格式:Interface 接口名称{}
接口成员的特点:
成员变量:必须是常量,默认的修饰符是public static final
构造方法:没有构造方法,因为要访问成员变量是常量,并且是静态的,直接通过类名调用,不需要对象(主要是用来扩展功能的)
成员方法:只能是抽象方法,默认的修饰符为public abstract
接口特点:
没有构造方法,不能实例化(但是可以按照多态的方式,由具体的子类实例化。其实这也是多态的一种,接口多态)
类实现接口用implements
接口的子类要么是抽象类,要么实现接口中的所有的抽象方法


类和接口以及彼此之间的关系:
类与类:
继承关系,支持单继承,不支持多继承,但是可以多层继承
类与接口:
实现关系,支持单实现,多实现,多层实现,还可以在继承一个类的同时实现接口
接口与接口:
继承关系,支持单继承,多继承,多层继承

抽象类和接口的区别:
成员区别:
成员变量:
抽象类:常量 ,变量
接口:常量,默认public static  final修饰
构造函数:
抽象类:有构造函数
接口:没有构造函数
成员方法:
抽象类:可以使具体方法,也可以是抽象方法
接口:只能是抽象方法
关系区别:
抽象类:一个类只能继承一个抽象类
接口:一个类可以实现多个接口
设计理念区别:
抽象类:为了解决共性功能,提高代码的复用性
接口:为了扩展功能
5.包:
概述:在电脑上就是文件夹,在java中称为包
作用:分类管理文件的,不能功能的类放在不同的包中

包定义:
包名:一般是以公司域名反转之后的前两位
package 包名;
包定义注意事项:
必须放在可执行代码第一行
一个源文件中只能出现一个package关键字
如果没有package关键字,就表明该类没有包名

包的编译和运行:
手动式:
1.javac 源文件名.java
2.手动建立对应的包名文件夹
3.将编译好的字节码文件放在对应的文件夹中
4.java 路径名.包含main方法的类
自动式:
1.javac -d . 源文件名.java
2.java 路径名.包含main方法的类

导包:为了让不同包的类方便访问,不需要再加全路径名
import 全路径名;