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 全路径名;
含义:让一个类永远只产生一个对象
恶汉式:
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 全路径名;
阅读全文
0 0
- Java基础学习之-07
- java基础学习之感悟07
- Java基础学习之路
- Java基础学习之路
- 学习java之基础一
- 学习java之基础二
- java学习之路--基础
- Android学习之 Java基础
- Java基础学习之路
- java基础学习之--XML
- Java学习之二进制基础
- java基础学习之数据类型
- java基础学习之final
- java基础学习之AWT
- java基础学习之Layout
- java基础学习之Layout2
- java基础学习之线程
- java基础学习之坦克
- Retrofit和Rxjava结合的例子
- Android——SeekBar自定义进度条背景无法充满的问题
- 机器学习讲座
- Linux-五-压缩与解压缩-(20170518)
- Python 元组
- Java基础学习之-07
- 升讯威微信营销系统开发实践:(5) Github 源码:微信接口的 .NET 封装
- JavaScript入门基础--对象
- 最短路(floyd+bellman+dijkstra+dijkstra优先队列优化+spfa)
- 求1+2+3+...+n你真的做的到吗?
- leetcode1--two sum(easy)
- QTextEdit 当中添加图片的几种方式
- Date与String的相互转化
- 获取iOS设备唯一标识