Java学习 · 初识 面向对象深入二
面向对象深入
- 1. 抽象类
a) 声明
i. 抽象方法和抽象类必须用abstract来修饰
ii. 没有方法体,不需要实现
b) 定义
i. 抽象方法的类只能定义抽象类
ii. 抽象类中不一定全都是抽象方法
c) 使用
i. 抽象类中可以包含属性、方法、抽象方法
ii. 不能实例化
iii. 只能用来继承
iv. 子类必须覆盖所有抽象方法,否则子类还是抽象类



- 2. 接口 interface
a) 定义
i. 接口就是比抽象类还抽象的抽象类
ii. 接口就是规范,定义的是一组规则
iii. 实现了规范和实现的分离
b) 接口的相关规则
i. 所有方法都是抽象的
ii. 变量默认为public static final
c) 使用
i. 可以定义一个接口,用extends继承了一个接口
ii. 可以定义一个类,用implements实现一个接口
iii. 可以定义一个抽象类,用implements实现接口的部分方法
d) 定义格式
i. [访问修饰符] interface 接口名 extends 父接口
- 常量定义:public static final
- 方法定义: public abstract
e) 如何实现接口
i. 
- 3. 内部类
a) 定义
i. 将一个类定义置入另一个类定义当中
b) 特点
i. 可以访问外部类的成员(包括private成员),反之不行
ii. 可声明为,public default protected private
iii. 编译后生成两个类,OuterClass.class OuterClass$InnerClass.class
c) 分类
i. 匿名内部类 Anonymous
- 可以实现一个接口,或继承一个父类
- 只能实现一接口
- 适合创建一次性使用的类,不能重复使用,在GUI编程中常见

- 4. Lambda表达式
a) 作用
i. 传递一个反复使用的代码块(在使用函数式接口时使用
b) 语法
i. (参数,参数)->{代码块}
c) 函数式接口
i. 定义:只有一个抽象方法的接口
d) 三种引用
i. 方法引用
- Object::instanceMethod
- Class::staticMethod
- Class::instanceMethod
ii. 构造器引用
- 类型::new
e) 变量作用域
i. Lambad表达式总是捕获最终对象
Java学习 · 初识 面向对象深入二的更多相关文章
- Java学习 · 初识 面向对象基础二
Package 为什么需要使用package a) 解决类重名的问题 b) 便于管理类 怎么使用package a) 类的第一句非注释性语句 b) 命名:域名倒着写,再加上模块名 注意 ...
- Java学习 · 初识 面向对象深入一
面向对象深入 1.面向对象三大特征 a) 继承 inheritance 子类可以从父类继承属性和方法 子类可以提供自己的属性方法 b) 封装 encapsulation 对外隐藏某些属性和方法 对外公 ...
- Java学习 · 初识 面向对象基础一
面向对象基础 1.1面向过程与面向对象的区别 面向过程和面向对象二者都是思考问题的方式,再简单的事物时,可以线性思考时使用面向过程,但当事物较为复杂时,只能使用面向对象设计.但二者并不是对立的,在解决 ...
- Java基础-初识面向对象编程(Object-Oriented-Programming)
Java基础-初识面向对象编程(Object-Oriented-Programming) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Java是一门面向对象的程序设计语言.那么什 ...
- 0025 Java学习笔记-面向对象-final修饰符、不可变类
final关键字可以用于何处 修饰类:该类不可被继承 修饰变量:该变量一经初始化就不能被重新赋值,即使该值跟初始化的值相同或者指向同一个对象,也不可以 类变量: 实例变量: 形参: 注意可以修饰形参 ...
- 0030 Java学习笔记-面向对象-垃圾回收、(强、软、弱、虚)引用
垃圾回收特点 垃圾:程序运行过程中,会为对象.数组等分配内存,运行过程中或结束后,这些对象可能就没用了,没有变量再指向它们,这时候,它们就成了垃圾,等着垃圾回收程序的回收再利用 Java的垃圾回收机制 ...
- 0028 Java学习笔记-面向对象-Lambda表达式
匿名内部类与Lambda表达式示例 下面代码来源于:0027 Java学习笔记-面向对象-(非静态.静态.局部.匿名)内部类 package testpack; public class Test1{ ...
- 0013 Java学习笔记-面向对象-static、静态变量、静态方法、静态块、单例类
static可以修饰哪些成员 成员变量---可以修饰 构造方法---不可以 方法---可以修饰 初始化块---可以修饰 内部类(包括接口.枚举)---可以修饰 总的来说:静态成员不能访问非静态成员 静 ...
- 黑马程序员——【Java基础】——面向对象(二)异常机制、包(Package)
---------- android培训.java培训.期待与您交流! ---------- 一.异常机制 (一)异常概述 1.异常:就是程序在运行时出现不正常情况. 2.异常类:程序在运行时,出现的 ...
随机推荐
- 安全清理Xcode 缓存垃圾
安全清理Xcode缓存垃圾方法: 经验证,Xcode缓存垃圾存储在~/Library/Developer/Xcode/DerivedData/路径下,缓存和Xcode的版本有关(如同一台Mac安装2个 ...
- C#发送邮件类库
public class Email { #region 发送邮件 /// <summary> /// 发送邮件 /// </summary> /// <param na ...
- Gradle Goodness: Init Script for Adding Extra Plugins to Existing Projects
Gradle Goodness: Init Script for Adding Extra Plugins to Existing Projects Gradle is very flexible. ...
- python统计文档中词频
python统计文档中词频的小程序 python版本2.7 效果如下: 程序如下,测试文件与完整程序在我的github中 #统计空格数与单词数 本函数只返回了空格数 需要的可以自己返回多个值 def ...
- JAVA给你讲它的故事
计算机语言如果你将它当做一个产品,就像我们平时用的电视机.剃须刀.电脑.手机等, 他的发展也是有规律的. 任何一个产品的发展规律都是:向着人更加容易使用.功能越来越强大的方向发展. 那么,我们的计算机 ...
- 内网最小化安装CentOS后,想安装ISO文件中的包怎么办呢?
昨日公司测试人员需要升级公司服务器Python,发现公司服务器上缺失了各种各样的包.比如open-ssl,python-deve等 1.查看你的Centos版本 lsb_release -a 2.上传 ...
- SHELL脚本简单的赋值与递增
Count=`expr $Count + 1`;#可以在各种shell执行,其他类C的写法只能在指定的bash版本执行; 赋值不能带$, 带$相当于字符串常量了;执行脚本参考如下 #!/bin/sh ...
- window下pip install Scrapy报错解决方案
1.首先打开https://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted,找到对应版本的Twisted并下载到你的文件夹. 2.利用pip install命令 ...
- 转:30分钟了解Springboot整合Shiro
引自:30分钟了解Springboot整合Shiro 前言:06年7月的某日,不才创作了一篇题为<30分钟学会如何使用Shiro>的文章.不在意之间居然斩获了22万的阅读量,许多人因此加了 ...
- ;(function($,window,document,undefined){})(jQuery,window,document)
;(function($,window,document,undefined){})(jQuery,window,doucment) 1.自调函数(function(){})() 2.好处是不会产生任 ...