Java SE 第二十一讲----抽象类
1.抽象类(abstract class):使用了abstract关键字修饰的类叫做抽象类,抽象类无法实例化,也就是说,不能new出来一个抽象类的对象。
2.抽象方法(abstract method):使用了abstract关键字修饰的方法叫做抽象方法,有声明无实现(没有花括号 public abstract void method();)
抽象方法需要定义在抽象类中。相对于抽象方法,之前所定义的方法叫做具体方法(有声明,有实现)。
3.如果某个类是包含了抽象方法,那么这个类一定是抽象类。
4.如果某个类是抽象类,那么该类可以包含具体方法(有声明有实现)。
5.如果一个类中包含了抽象方法,那么这个类一定要声明成抽象类,也就是说,该类一定是抽象类,繁殖如果某个类是抽象类,那么该类就可以包含抽象方法跟具体方法。
6.无论何种情况,只要一个类是抽象类,那么这个类就无法实例化。
7.在子类继承父类(父类是个抽象类)的情况下,那么该子类必须要实现父类中所定义的所有的抽象方法,否则,该子类需要声明成一个abstract class
报错内容:The type R must implement the inherited abstract method T.method()
class R extends T
{ @Override
public void method() {
// TODO Auto-generated method stub } }
这样就好了 或者将R变成abstract类,但是就不能被实例化了
实例如下:计算图形的面积
package com.cl.abstracttest;
public class Test2 {
public static void main(String[] args) {
Shape t = new Triangle(2,4);
int area = t.computArea();
System.out.println("Triangle:"+area);//三角形
t = new Rectangle(10,10);
area = t.computArea();
System.out.println("Rectangle:"+area);//矩形
}
}
abstract class Shape{
public abstract int computArea();
}
class Triangle extends Shape{
int width;
int height;
public Triangle(int width,int height){
this.width = width;
this.height = height;
}
public int computArea() {
return (width * height) / 2;
}
}
class Rectangle extends Shape{
int width;
int height;
public Rectangle(int width,int height){
this.width = width;
this.height = height;
}
@Override
public int computArea() {
return width*height;
}
}
Java SE 第二十一讲----抽象类的更多相关文章
- Java SE 第十一讲----面向对象特征之封装2
1.如果一个类包含了属性跟方法,那么该类的每一个对象都具有自己的属性,但无乱一个类有多少个对象,这些对象共享同一个方法. 2.关于方法参数传递的总结: 对于Java中的方法参数传递,无论传递的是原生数 ...
- “全栈2019”Java多线程第二十一章:同步代码块产生死锁的例子
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...
- “全栈2019”Java异常第二十一章:finally不被执行的情况
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java异 ...
- Java SE 第二篇
二. Java SE 第二篇 1. Arrays 数组 // 声明一维数组,[]内不允许有值 int[] arr; int arr[]; // 创建一维数组对象,[]内必须有值 arr = new ...
- Java SE 第二十二讲----接口interface
1.接口:interface:接口的地位等同于class,接口中的所有方法都是抽象方法.在声明接口中的方法的时候,可以使用abstract关键字也可以不使用.通常情况下,都会省略掉abstract关键 ...
- Java SE 第二十四讲----static与final使用陷阱关键字
1.对于final类型成员变量,一般来说有两种赋值方式: a)在声明final类型的成员变量时就附上初值 package com.cl.staticandfinal; public class Fin ...
- Java SE 第二十三讲----static关键字and final关键字
1.static关键字 [在二十二讲视频中30分钟开始讲授] 2.static修饰属性:无论一个类生成了多少个对象,所有这些对象共同使用唯一一份静态的成员变量:一个对象对该静态成员变量进行了修改,其他 ...
- 趣谈Linux操作系统学习笔记:第二十一讲
一.分段机制 1.分段机制的原理图 2.段选择子 3.段偏移量 例如,我们将上面的虚拟空间分成以下 4 个段,用 0-3 来编号.每个段在段表中有一个项,在物理空间中,段的排列如下图的右边所示. 4. ...
- MySQL实战45讲学习笔记:第二十一讲
一.引子 在上一篇文章中,我和你介绍了间隙锁和 next-key lock 的概念,但是并没有说明加锁规则.间隙锁的概念理解起来确实有点儿难,尤其在配合上行锁以后,很容易在判断是否会出现锁等待的问题上 ...
随机推荐
- Vs 2015 中一些新的语法支持
又是语法糖. 1, if (tdata != null && tdata.Data != null) 等价于 if (tdata?.Data != null) 2, int a ...
- wikioi 1475 m进制转十进制
/*===================================== 1475 m进制转十进制 题目描述 Description 将m进制数n转化成一个十进制数 m<=16 题目保证转 ...
- OpenJudge计算概论-鸡尾酒疗法
/*===================================== 鸡尾酒疗法 总时间限制: 1000ms 内存限制: 65536kB 描述 鸡尾酒疗法,原指“高效抗逆转录病毒治疗”(HA ...
- [NOIp 1998 提高组]Probelm 2 连接多位数【2011百度实习生笔试题】
/*====================================================================== [NOIp 1998 提高组]Probelm 2 连接 ...
- Golang_test
package main import ( "fmt" "time" ) func GetName() { //没事玩一下循环 for i := 0; i &l ...
- Word快捷键
▲Word快捷键 [F1]键:帮助 [F2]键:移动文字或图形,按回车键确认 [F4]键:重复上一次的操作 [F5]键:编辑时的定位 [F6]键:在文档和任务窗格或其他Word窗格之间切换 [F8]键 ...
- 用Navicat连接Oracle数据库时报错ORA-28547:connection to server failed,probable Oracle Net admin error
用Navicat连接Oracle数据库时出现如下错误 上网一查原来是oci.dll版本不对.因为Navicat是通过Oracle客户端连接Oracle服务器的,Oracle的客户端分为两种,一种是标准 ...
- 【linux】linux创建用户并授予sudo权限
1. 新建用户 root@ubuntu:~# adduser hadoop root@ubuntu:~# passwd hadoop #为hadoop用户设置密码 2. 为hadoop用户添加sudo ...
- php.ini xdebug
[XDebug]zend_extension = "C:\xampp\php\ext\php_xdebug.dll"xdebug.profiler_append = 0xdebug ...
- bzoj1006 神奇的国度
Description K国是一个热衷三角形的国度,连人的交往也只喜欢三角原则.他们认为三角关系:即AB相互认识,BC相互认识,CA相互认识,是简洁高效的.为了巩固三角关系,K国禁止四边关系,五边关系 ...