面向对象深入

  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. 【题解】洛谷P3952 [NOIP2017TG] 时间复杂度(模拟)

    题目来源:洛谷P3952 思路 纯模拟没啥可说的了 果然好复杂 参考了你谷一个40行代码 代码 #include<iostream> #include<cstdio> #inc ...

  2. [转载] iOS应用程序的生命周期

    iOS应用程序的生命周期 2015-06-23 iOS大全 (点击上方蓝字,快速关注我们) iOS应用程序一般都是由自己编写的代码和系统框架(system frameworks)组成,系统框架提供一些 ...

  3. 身份认证系统(一)单WEB应用的身份认证

    身份认证技术,也就是所谓的登录功能,是现代WEB系统最常见的功能之一.本系列文章就试图为大家详细的介绍身份认证技术. Basic认证模式 Basic认证模式是较早被广泛应用的一种HTTP标准提供的认证 ...

  4. LeetCode 中级 - 优势洗牌(870)

    给定两个大小相等的数组 A 和 B,A 相对于 B 的优势可以用满足 A[i] > B[i] 的索引 i 的数目来描述. 返回 A 的任意排列,使其相对于 B 的优势最大化. 示例 2: 输入: ...

  5. 百度地图定位JSP代码

    附:百度地图API:http://lbsyun.baidu.com/cms/jsapi/reference/jsapi_reference.html#a1b0?qq-pf-to=pcqq.c2c &l ...

  6. Elasticsearch 聚合操作

    数据准备: PUT /shop { "settings": { "number_of_shards": 3, "number_of_replicas& ...

  7. tp5.1路由报错No input file specified.

    问题: 按照官方教安装了框架,打开首页没问题,可是安装教程路由规则打开 "http://127.0.0.1/hello/2" 时, 却报错误  "No input fil ...

  8. Case Helper

    using System; using Microsoft.Xrm.Sdk; using Microsoft.Crm.Sdk.Messages; using Microsoft.Xrm.Sdk.Que ...

  9. S3C2440上LCD驱动(FrameBuffer)实例开发讲解(一)

    一.开发环境 主  机:VMWare--Fedora 9 开发板:Mini2440--64MB Nand, Kernel:2.6.30.4 编译器:arm-linux-gcc-4.3.2 二.背景知识 ...

  10. usb之鼠标作为按键输入

    1. 首先搞清楚,鼠标点左键.右键等能得到什么数据,然后分析这些数据上报事件即可. 第一个基本点:usb_alloc_urb函数,创建一个struct urb结构体,只能使用这个函数来创建,它是urb ...