上一篇博文里总结了面向对象三大特性在Java中的体现。如今谈一谈Java中的抽象类,接口,内部类等特性。

一. 抽象类

public abstract class Shape {
public int shapeID = 0;
public abstract double getArea();
}
  1. Java中同意类、接口或成员方法具有抽象属性,而不同意成员域或构造方法具有抽象属性。

  2. 类修饰词中含有abstract的类具有抽象属性,称为抽象类;接口总是具有抽象属性。

  3. 假设成员方法的修饰词中含有abstract。则该成员方法具有抽象属性,称为抽象方法。抽象方法仅仅能在抽象类或接口中定义。而抽象类中一般有至少一个抽象方法,所以整体上来讲。含有抽象方法的类叫做抽象类。
  4. 抽象方法不含方法体。格式例如以下:

    [方法修饰词列表] 返回类型 方法名(參数列表);
  5. 抽象类能够具有构造方法。但不能直接生成实例,必须通过非抽象子类生成实例。

  6. 假设抽象类的子类不是抽象类,则要求在子类的定义中必须覆盖父类(抽象类)的全部抽象方法。

二. 接口

Java不同意一个子类拥有多个直接父类,但同意一个类实现多个接口。接口定义的格式为:
[接口修饰词列表] interface 接口名 [extends 接口名列表] { 接口体 }
public interface Shape {
public static final double PI = 3.14159;
public abstract double getArea();
}
  1. 外部接口和外部类一样,一般都不具有protected和private属性
  2. 接口本身具有抽象属性。所以abstract修饰词是不必要的。

  3. 接口体内部不含构造方法,不能直接通过接口生成实例对象
  4. 接口的全部成员域都具有public、static和final属性;接口的全部成员方法都具有public和abstract属性
  5. 若实现接口的类不是抽象类。则须要在该类的类体中定义覆盖该接口中的全部成员方法。

三. 内部类

实名内部类

  1. 实名内部类的封装性修饰词添加了protected和private。

    能够依据情况选择。

  2. 对于不具有静态属性的实名内部类,假设它的成员域具有静态属性,则必须同一时候具有final属性;不具有静态属性的实名内部类不能含有具有静态属性的方法。

  3. 实名内部类实例对象的创建方法

    * 静态实名内部类的实例对象:

    new 外部类名.实名内部类名(參数列表)

    *
    不具有静态属性的实名内部类的实例对象:

    外部类表达式.new 实名内部类名(參数列表)

匿名内部类

匿名内部类不具有类名,不能具有抽象和静态属性,而且不能派生出子类。匿名内部类的定义格式是:
new 父类型名(參数列表) { 类体 }

举个样例比較easy理解:
abstract class ClassA {
int data;
public ClassA (int i) { data = i; }
public abstract void method();
} public class ClassB {
public static void main(String[] args) {
ClassA a = new ClassA(3) {
public void method() {
System.out.println(data);
}
}; a.method();
}
}

四. final 修饰词

  1. 具有final属性的的类不能派生子类
  2. 假设成员域具有final属性。则不能被子类的成员域所覆盖,且在赋值后不能被改变。假设成员域同一时候具有final和static属性,则其仅仅能在定义时赋值;假设成员域仅仅具有final属性。不具有static属性。则仅仅能在定义时或构造方法中赋值。
  3. 假设一个类的成员方法具有final属性。则其不能被当前类的子类的成员方法覆盖。

五. static 修饰词

除内部类外,类一般不具有static属性。static的内部类的原因和特性还须要进一步学习。

六. Misc

abstract, static, final是三个经常使用修饰词。

这三个修饰词中仅仅有static和final两个修饰词能够组合在一起。

Java面向对象编程(二)的更多相关文章

  1. Java面向对象编程基础

    一.Java面向对象编程基础 1.什么是对象?Object 什么都是对象! 只要是客观存在的具体事物,都是对象(汽车.小强.事件.任务.按钮.字体) 2.为什么需要面向对象? 面向对象能够像分析现实生 ...

  2. java面向对象总结(二)

    Java 封装 实现Java封装的步骤 java面向对象值继承 概念: 继承的格式: 类和类之间的关系: 继承的特点: 继承的优缺点 继承的好处: 继承的缺点: 继承的注意事项: 使用继承的步骤: J ...

  3. JAVA面向对象编程课程设计——网络版单机斗地主

    一.团队介绍 成员姓名 任务分配 成员课程设计博客链接 兰泽祥(组长) 数据库,斗地主规则的实现,人机自动出牌的算法,实体类的设计 JAVA面向对象编程课程设计--web版斗地主 吴修恩 JSP界面的 ...

  4. JAVA面向对象编程课程设计——web版斗地主

    一.团队课程设计博客链接 JAVA面向对象编程课程设计--网络版单机斗地主 二.个人负责模块或任务说明 实体类的设计 斗地主规则的实现 人机自动出牌的算法 实现数据库的DAO模式 三.自己的代码提交记 ...

  5. java面向对象编程知识点总结

    一:今天完成 上午详细了解了java面向对象编程的一些细节,记录如下. 1)类 是一种引用类型,包含一个签名和一个主体,主体是放在花括号里面的成员,成员包括字段和方法,还有构造方法.初始化程序和嵌套类 ...

  6. Java面向对象编程(一)

    由于常常将Java和C++面向对象编程的原则搞乱,所以这次把相关要点分别总结一下,本文主要总结Java面向对象编程. 面向对象编程的三大特性是:继承性(inheritance), 多态性(polymo ...

  7. Java并发编程二三事

    Java并发编程二三事 转自我的Github 近日重新翻了一下<Java Concurrency in Practice>故以此文记之. 我觉得Java的并发可以从下面三个点去理解: * ...

  8. Python进阶之面向对象编程(二)

    Python面向对象编程(二) .note-content {font-family: "Helvetica Neue",Arial,"Hiragino Sans GB& ...

  9. java 面向对象编程。。。。

    经过一周的学习(java),总结了许多,对java的理解,java的类型,运用,安装,基础语法,变量,常量,表达式,语句 java从C语言中继承了大量语言特性.java面向对象编程的基本特征,包括继承 ...

随机推荐

  1. Spring框架配置beans.xml扩展

    Spring学习笔记(二) 续Spring 学习笔记(一)之后,对Spring框架XML的操作进行整理 1 什么是IOC(DI) IOC = inversion of control   控制反转 D ...

  2. zookeeper 下载安装

    下载:wget https://www-us.apache.org/dist/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz 解压:tar -zx ...

  3. maven学习(四)——maven项目构建过程

    一.创建Maven项目 1.1.建立Hello项目 1.首先建立Hello项目,同时建立Maven约定的目录结构和pom.xml文件 Hello | --src | -----main | ----- ...

  4. 【bzoj4999】This Problem Is Too Simple! 树链剖分+动态开点线段树

    题目描述 给您一颗树,每个节点有个初始值. 现在支持以下两种操作: 1. C i x(0<=x<2^31) 表示将i节点的值改为x. 2. Q i j x(0<=x<2^31) ...

  5. [luoguP2224] [HNOI2001]产品加工(背包DP)

    传送门 f[i][j]表示第一个机器耗时j,第二个机器耗时f[i][j] 第一维可以滚掉 #include <cstdio> #include <cstring> #inclu ...

  6. js处理浮点数计算误差

    众所周知,浮点计算会产生舍入误差的问题,比如,0.1+0.2,结果应该是0.3,但是计算的结果并不是如此,而是0.30000000000000004,这是使用基于IEEE754数值的浮点计算的通病,j ...

  7. css 两列布局中单列定宽单列自适应布局的6种思路

    前面的话 说起自适应布局方式,单列定宽单列自适应布局是最基本的布局形式.本文将从float.inline-block.table.absolute.flex和grid这六种思路来详细说明如何巧妙地实现 ...

  8. css 三列布局

    前面的话 前面已经介绍过单列定宽单列自适应和两列自适应的两列布局.本文介绍三列布局,分为两侧定宽中间自适应.两列定宽一侧自适应.中间定宽两侧自适应.一侧定宽两列自适应和三列自适应这五种情况 两侧定宽中 ...

  9. hdu 2243 考研路茫茫——单词情结 AC自动机 矩阵幂次求和

    题目链接 题意 给定\(N\)个词根,每个长度不超过\(5\). 问长度不超过\(L(L\lt 2^{31})\),只由小写字母组成的,至少包含一个词根的单词,一共可能有多少个? 思路 状态(AC自动 ...

  10. python的特殊方法总结

    1.跟运算相关的特殊方法 2.跟运算符相关的方法