面向对象深入

  1. 1.            抽象类

a)     声明

i.           抽象方法和抽象类必须用abstract来修饰

ii.           没有方法体,不需要实现

b)    定义

i.           抽象方法的类只能定义抽象类

ii.           抽象类中不一定全都是抽象方法

c)     使用

i.           抽象类中可以包含属性、方法、抽象方法

ii.           不能实例化

iii.           只能用来继承

iv.           子类必须覆盖所有抽象方法,否则子类还是抽象类

  1. 2.            接口 interface

a)     定义

i.           接口就是比抽象类还抽象的抽象类

ii.           接口就是规范,定义的是一组规则

iii.           实现了规范和实现的分离

b)    接口的相关规则

i.           所有方法都是抽象的

ii.           变量默认为public static final

c)     使用

i.           可以定义一个接口,用extends继承了一个接口

ii.           可以定义一个类,用implements实现一个接口

iii.           可以定义一个抽象类,用implements实现接口的部分方法

d)    定义格式

i.           [访问修饰符] interface 接口名 extends 父接口

  1. 常量定义:public static final
  2. 方法定义: public abstract

e)     如何实现接口

i.          

  1. 3.            内部类

a)     定义

i.           将一个类定义置入另一个类定义当中

b)    特点

i.           可以访问外部类的成员(包括private成员),反之不行

ii.           可声明为,public default protected private

iii.           编译后生成两个类,OuterClass.class OuterClass$InnerClass.class

c)     分类

i.           匿名内部类 Anonymous

  1. 可以实现一个接口,或继承一个父类
  2. 只能实现一接口
  3. 适合创建一次性使用的类,不能重复使用,在GUI编程中常见
  4. 4.            Lambda表达式

a)     作用

i.           传递一个反复使用的代码块(在使用函数式接口时使用

b)    语法

i.           (参数,参数)->{代码块}

c)     函数式接口

i.           定义:只有一个抽象方法的接口

d)    三种引用

i.           方法引用

  1. Object::instanceMethod
  2. Class::staticMethod
  3. Class::instanceMethod

ii.           构造器引用

  1. 类型::new

e)     变量作用域

i.           Lambad表达式总是捕获最终对象

Java学习 · 初识 面向对象深入二的更多相关文章

  1. Java学习 · 初识 面向对象基础二

    Package 为什么需要使用package a)   解决类重名的问题 b)   便于管理类 怎么使用package a)   类的第一句非注释性语句 b)   命名:域名倒着写,再加上模块名 注意 ...

  2. Java学习 · 初识 面向对象深入一

    面向对象深入 1.面向对象三大特征 a) 继承 inheritance 子类可以从父类继承属性和方法 子类可以提供自己的属性方法 b) 封装 encapsulation 对外隐藏某些属性和方法 对外公 ...

  3. Java学习 · 初识 面向对象基础一

    面向对象基础 1.1面向过程与面向对象的区别 面向过程和面向对象二者都是思考问题的方式,再简单的事物时,可以线性思考时使用面向过程,但当事物较为复杂时,只能使用面向对象设计.但二者并不是对立的,在解决 ...

  4. Java基础-初识面向对象编程(Object-Oriented-Programming)

    Java基础-初识面向对象编程(Object-Oriented-Programming) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Java是一门面向对象的程序设计语言.那么什 ...

  5. 0025 Java学习笔记-面向对象-final修饰符、不可变类

    final关键字可以用于何处 修饰类:该类不可被继承 修饰变量:该变量一经初始化就不能被重新赋值,即使该值跟初始化的值相同或者指向同一个对象,也不可以 类变量: 实例变量: 形参: 注意可以修饰形参 ...

  6. 0030 Java学习笔记-面向对象-垃圾回收、(强、软、弱、虚)引用

    垃圾回收特点 垃圾:程序运行过程中,会为对象.数组等分配内存,运行过程中或结束后,这些对象可能就没用了,没有变量再指向它们,这时候,它们就成了垃圾,等着垃圾回收程序的回收再利用 Java的垃圾回收机制 ...

  7. 0028 Java学习笔记-面向对象-Lambda表达式

    匿名内部类与Lambda表达式示例 下面代码来源于:0027 Java学习笔记-面向对象-(非静态.静态.局部.匿名)内部类 package testpack; public class Test1{ ...

  8. 0013 Java学习笔记-面向对象-static、静态变量、静态方法、静态块、单例类

    static可以修饰哪些成员 成员变量---可以修饰 构造方法---不可以 方法---可以修饰 初始化块---可以修饰 内部类(包括接口.枚举)---可以修饰 总的来说:静态成员不能访问非静态成员 静 ...

  9. 黑马程序员——【Java基础】——面向对象(二)异常机制、包(Package)

    ---------- android培训.java培训.期待与您交流! ---------- 一.异常机制 (一)异常概述 1.异常:就是程序在运行时出现不正常情况. 2.异常类:程序在运行时,出现的 ...

随机推荐

  1. 闭包和let块级作用域

    还是先从一个题目开始: 写一个隔1s输出数组的一项的函数. 如果可以用ES6语法,则可以这么写: function print (arr) { for (let i = 0; i < arr.l ...

  2. String.Format() 方法

    一 定义 String.Format() 是将指定的 String类型的数据中的每个格式项替换为相应对象的值的文本等效项. string p1 = "Jackie"; string ...

  3. 在vue-cli + webpack 项目中使用sass

    1.准备工作: 由于npm的服务器在国外,网速慢而且安装容易失败,建议在安装之前,先安装国内的镜像,比如淘宝镜像 npm install -g cnpm --registry=https://regi ...

  4. 日常工作之Zabbix源码编译,兼容mysql5.6

    原文链接:http://www.leleblog.top/daily/more?id=6 Zabbix源码编译 环境: centOS7.mysql5.6.21(已存在). 任务简述: 服务器搭建zab ...

  5. canvas常用属性方法由浅下沉

    首先引入<canvas></canvas>标签就不必说了. 其次就是得到canvas的2d环境了( var ctx = canvasDom.getContext('2d') ) ...

  6. hadoop生态搭建(3节点)-08.kafka配置

    如果之前没有安装jdk和zookeeper,安装了的请直接跳过 # https://www.oracle.com/technetwork/java/javase/downloads/java-arch ...

  7. opencv3 学习三 - 图像输入输出显示等

    程序如下 #include "opencv2/opencv.hpp" using namespace cv; int main() { Mat file1 = imread(&qu ...

  8. VSCode 配置 Python

    假设 Anaconda 和 VSCode 都安装好了. 安装插件 VSCode 自带的 python 高亮不是很好,这里我们用 One Dark Pro 插件, 以及安装 Python 插件. 设定 ...

  9. python应用:爬虫框架Scrapy系统学习第四篇——scrapy爬取笔趣阁小说

    使用cmd创建一个scrapy项目: scrapy startproject project_name (project_name 必须以字母开头,只能包含字母.数字以及下划线<undersco ...

  10. 手搓一个C语言简单计算器。

    #include <stdio.h> void xing(int shu); void biaoti(int kong,char * title); void zhuyemian(char ...