Java面向对象编程(二)
上一篇博文里总结了面向对象三大特性在Java中的体现。如今谈一谈Java中的抽象类,接口,内部类等特性。
一. 抽象类
public abstract class Shape {
public int shapeID = 0;
public abstract double getArea();
}
- Java中同意类、接口或成员方法具有抽象属性,而不同意成员域或构造方法具有抽象属性。
- 类修饰词中含有abstract的类具有抽象属性,称为抽象类;接口总是具有抽象属性。
- 假设成员方法的修饰词中含有abstract。则该成员方法具有抽象属性,称为抽象方法。抽象方法仅仅能在抽象类或接口中定义。而抽象类中一般有至少一个抽象方法,所以整体上来讲。含有抽象方法的类叫做抽象类。
- 抽象方法不含方法体。格式例如以下:
[方法修饰词列表] 返回类型 方法名(參数列表); - 抽象类能够具有构造方法。但不能直接生成实例,必须通过非抽象子类生成实例。
- 假设抽象类的子类不是抽象类,则要求在子类的定义中必须覆盖父类(抽象类)的全部抽象方法。
二. 接口
public interface Shape {
public static final double PI = 3.14159;
public abstract double getArea();
}
- 外部接口和外部类一样,一般都不具有protected和private属性
- 接口本身具有抽象属性。所以abstract修饰词是不必要的。
- 接口体内部不含构造方法,不能直接通过接口生成实例对象
- 接口的全部成员域都具有public、static和final属性;接口的全部成员方法都具有public和abstract属性
- 若实现接口的类不是抽象类。则须要在该类的类体中定义覆盖该接口中的全部成员方法。
三. 内部类
实名内部类
- 实名内部类的封装性修饰词添加了protected和private。
能够依据情况选择。
- 对于不具有静态属性的实名内部类,假设它的成员域具有静态属性,则必须同一时候具有final属性;不具有静态属性的实名内部类不能含有具有静态属性的方法。
- 实名内部类实例对象的创建方法
* 静态实名内部类的实例对象:
new 外部类名.实名内部类名(參数列表)
* 不具有静态属性的实名内部类的实例对象:
外部类表达式.new 实名内部类名(參数列表)
匿名内部类
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 修饰词
- 具有final属性的的类不能派生子类
- 假设成员域具有final属性。则不能被子类的成员域所覆盖,且在赋值后不能被改变。假设成员域同一时候具有final和static属性,则其仅仅能在定义时赋值;假设成员域仅仅具有final属性。不具有static属性。则仅仅能在定义时或构造方法中赋值。
- 假设一个类的成员方法具有final属性。则其不能被当前类的子类的成员方法覆盖。
五. static 修饰词
六. Misc
这三个修饰词中仅仅有static和final两个修饰词能够组合在一起。
Java面向对象编程(二)的更多相关文章
- Java面向对象编程基础
一.Java面向对象编程基础 1.什么是对象?Object 什么都是对象! 只要是客观存在的具体事物,都是对象(汽车.小强.事件.任务.按钮.字体) 2.为什么需要面向对象? 面向对象能够像分析现实生 ...
- java面向对象总结(二)
Java 封装 实现Java封装的步骤 java面向对象值继承 概念: 继承的格式: 类和类之间的关系: 继承的特点: 继承的优缺点 继承的好处: 继承的缺点: 继承的注意事项: 使用继承的步骤: J ...
- JAVA面向对象编程课程设计——网络版单机斗地主
一.团队介绍 成员姓名 任务分配 成员课程设计博客链接 兰泽祥(组长) 数据库,斗地主规则的实现,人机自动出牌的算法,实体类的设计 JAVA面向对象编程课程设计--web版斗地主 吴修恩 JSP界面的 ...
- JAVA面向对象编程课程设计——web版斗地主
一.团队课程设计博客链接 JAVA面向对象编程课程设计--网络版单机斗地主 二.个人负责模块或任务说明 实体类的设计 斗地主规则的实现 人机自动出牌的算法 实现数据库的DAO模式 三.自己的代码提交记 ...
- java面向对象编程知识点总结
一:今天完成 上午详细了解了java面向对象编程的一些细节,记录如下. 1)类 是一种引用类型,包含一个签名和一个主体,主体是放在花括号里面的成员,成员包括字段和方法,还有构造方法.初始化程序和嵌套类 ...
- Java面向对象编程(一)
由于常常将Java和C++面向对象编程的原则搞乱,所以这次把相关要点分别总结一下,本文主要总结Java面向对象编程. 面向对象编程的三大特性是:继承性(inheritance), 多态性(polymo ...
- Java并发编程二三事
Java并发编程二三事 转自我的Github 近日重新翻了一下<Java Concurrency in Practice>故以此文记之. 我觉得Java的并发可以从下面三个点去理解: * ...
- Python进阶之面向对象编程(二)
Python面向对象编程(二) .note-content {font-family: "Helvetica Neue",Arial,"Hiragino Sans GB& ...
- java 面向对象编程。。。。
经过一周的学习(java),总结了许多,对java的理解,java的类型,运用,安装,基础语法,变量,常量,表达式,语句 java从C语言中继承了大量语言特性.java面向对象编程的基本特征,包括继承 ...
随机推荐
- spring bean自动注入
使用 @Repository.@Service.@Controller 和 @Component 将类标识为 Bean Spring 自 2.0 版本开始,陆续引入了一些注解用于简化 Spring 的 ...
- MySql数据库 - 5.用C#连接数据库
添加 dll 引用,dll 位置:C:\Program Files (x86)\MySQL\Connector NET 8.0\Assemblies\v4.5.2 引入命名空间:MySql.Data. ...
- chrome浏览器无法安装非应用商店插件的解决办法
不久前,安装了一个非chrome应用商店的第三方应用,今天突然发现无法使用,打开chrome的扩展程序后,发现该插件以及被禁用,在网上查找了解决方法,设置“开发者模式”,修改了chrome的参数,仍然 ...
- wooyun
转自:http://zone.wooyun.org/content/19128 tencent.com baidu.com sina.com.cn sohu.com discuz.net rising ...
- 解决 unity 用 vs通过wifi 真机联调 一直连接不上
平时 在公司网络太差,要通过wifi 用vs真机联调时,vs一直连不上设备,很是蛋疼...用下面官方给出的方法可以解决 Attaching MonoDevelop Debugger To An And ...
- UIAlertController 实现kvo实现mes文字设置
UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"更新提示" message:[NS ...
- 沼泽鳄鱼(bzoj 1898)
Description 潘塔纳尔沼泽地号称世界上最大的一块湿地,它地位于巴西中部马托格罗索州的南部地区.每当雨季来临,这里碧波荡漾.生机盎然,引来不少游客.为了让游玩更有情趣,人们在池塘的中央建设了几 ...
- 输出前k大的数
总时间限制: 10000ms单个测试点时间限制:1000ms内存限制:65536kB(noi) 描述 给定一个数组,统计前k大的数并且把这k个数从大到小输出. 输入 第一行包含一个整数n,表示数组的大 ...
- 自定义JavaScript字典类jsdictionary.js
/* Dictionary类:本类实现了字典功能,所有方法.属性都模仿System..Collection.Generic.Dictionary类 构造函数: Dictionary() 属性: Com ...
- [LeetCode] Minimum Depth of Binary Tree 二叉树最小深度
Given a binary tree, find its minimum depth. The minimum depth is the number of nodes along the shor ...