抽象类
1,语法定义
抽象类前使用abstract关键字修饰,则该类为抽象类
2.应用场景
(1)在某些情况下,某个父类只是知道其子类应该包含怎样的方法,但无法准确知道这些子类如何实现这些方法。

(2)从多个具有相同特征的类抽象出一个抽象类,以这个抽象类作为子类的模板,从而避免了子类设计的随意性

3.作用

限制规定子类必须实现某些方法,但不关注实现细节

(主要目的:不关注子类的实现。但是要约束子类必须要有哪些子类)

4.适用方法(使用规则)

(1)abstract定义抽象类

(2)abstract定义抽象方法,只声明,不需要实现

(3)包含抽象方法的类都是抽象类

(4)抽象类中可以包含普通的方法,也可以没有抽象方法

(5)抽象类不能直接创建,可以定义引用变量

**抽象类没没有方法体,但是以分号结束

***小技巧

"syso+alt+/"System.out.println("");快捷键

在创建子类时,勾选Browse选择父类名称

在创建子类时,勾选abstract直接生成抽象类

创建测试类(Initail类main方法)时,勾选public static void main(String[] args)直接生成:

public static void main(String[] args) {

// TODO Auto-generated method stub

}

public abstract class Telphone {
public abstract void call();
public abstract void message();
}
public class CellPhone extends Telphone {
@Override
public void call() {
System.out.println("通过键盘打电话");
}
@Override
public void message() {
// TODO Auto-generated method stub
System.out.println("通过键盘打电话");
} }
class SmartPhone extends Telphone {
@Override
public void call() {
// TODO Auto-generated method stub
System.out.println("可以通过语音打电话");
}
@Override
public void message() {
// TODO Auto-generated method stub
System.out.println("可以通过语音发短信");
}
}
public class Initail {
public static void main(String[] args) {
// TODO Auto-generated method stub
Telphone tel1=new CellPhone();
tel1.call();
tel1.message();
Telphone tel2=new SmartPhone();
tel2.call();
tel2.message();
}
}
疑问:
@Override 为自动生成的代码,,是什么意思,有什么作用?
@Override是伪代码,表示重写(当然不写也可以),不过写上有如下好处: 
1、可以当注释用,方便阅读;
2、编译器可以给你验证
// TODO Auto-generated method stub 为自动生成的代码,,是什么意思,有什么作用? 意思是告诉你这些代码是自动生成的,不是你自己写的,就是一个提示的作用,没大作用

练习:

现有shape图形类,他有两个图形类,用Rectangle矩形和Circle圆形子类,求圆形的周长和面积。

package com.shape;
public abstract class Shape {
public abstract void CPerimeter();
public abstract void CArea();
}
package com.shape;
import java.util.Scanner;
public class Rectangle extends Shape {
int longs=;
int width=;
int perimeter=;
int area=;
@Override
public void CPerimeter() {
int longs=;
int width=;
Scanner in=new Scanner(System.in);
System.out.println("请输入长方形的长");
longs=in.nextInt();
System.out.println("请输入长方形的宽");
width=in.nextInt();
// TODO Auto-generated method stub
perimeter=*(longs+width);
System.out.println("长方形周长为:"+perimeter);
}
@Override
public void CArea() {
int longs=;
int width=;
Scanner in=new Scanner(System.in);
System.out.println("请输入长方形的长");
longs=in.nextInt();
System.out.println("请输入长方形的宽");
width=in.nextInt();
// TODO Auto-generated method stub
area=longs*width;
System.out.println("长方形面积为:"+area);
} }
package com.shape;
import java.util.Scanner;
public class Circle extends Shape {
@Override
public void CPerimeter() {
// TODO Auto-generated method stub
double r=;
double perimeter=;
Scanner in=new Scanner(System.in);
System.out.println("圆形的半径");
r=in.nextInt();
perimeter=*(Math.PI )*r;
System.out.println("圆形的周长为:"+perimeter);
}
@Override
public void CArea() {
// TODO Auto-generated method stub
double r=;
double area=;
Scanner in=new Scanner(System.in);
System.out.println("圆形的半径");
r=in.nextInt();
area=(Math.PI) *r*r;
System.out.println("圆形的周长为:"+area);
}
}
package com.shape;
public class Initail {
public static void main(String[] args)
{
Shape sh1=new Rectangle();
Shape sh2=new Circle();
sh1.CArea();
sh1.CPerimeter();
sh2.CArea();
sh2.CPerimeter();
}
}

java_抽象类的更多相关文章

  1. java_抽象类应用

    本例子通过一个实例来具体阐述抽象类的应用,首先一个抽象类Person2,里面定义了一些人的共有属性(年龄,姓名),和抽象方法want(),want()方法来具体实现不同的人的需求(学生想要成绩,工人想 ...

  2. java_抽象类、接口、多态的使用

    抽象类 抽象类:包含抽象方法的类. 抽象方法 : 没有方法体的方法. 使用 abstract关键字修饰方法,该方法就成了抽象方法,抽象方法只包含一个方法名,而没有方法体. 格式为:修饰符 abstra ...

  3. java_抽象类和接口

    1.抽象类: 1.抽象类之所以被称为抽象类,就是因为它包含有抽象方法,只要含有抽象方法的类就叫抽象类. 2.抽象类中可以没有抽象方法,也可以抽象方法和非抽象方法共存. 3.抽象类和类一样是单继承的. ...

  4. java_接口和抽象类的区别

    1. 接口只能定义抽象方法,不包含已经提供实现的方法. 抽象类可以包含普通方法 2. 接口不能定义静态方法.抽象类可以定义静态方法 3. 接口里只能定义静态常量filed,不能定义普通filed. 抽 ...

  5. Java_接口与抽象类

    接口: 接口,英文interface,在java中,泛指供别人调用的方法或函数.接口是对行为的一种抽象. 语法: [public] interface InterfaceName{} 注意: 1)接口 ...

  6. java_基础_接口和抽象类

    1.接口 java中接口的存在意义是:让多个继承该接口的类实现多态,让多个类有相同的特征 示例代码: interface MyInterface{ void myMethod(); } class T ...

  7. PHP 面向对象编程和设计模式 (1/5) - 抽象类、对象接口、instanceof 和契约式编程

    PHP高级程序设计 学习笔记 2014.06.09 什么是面向对象编程 面向对象编程(Object Oriented Programming,OOP)是一种计算机编程架构.OOP 的一条基本原则是计算 ...

  8. 从接口、抽象类到工厂模式再到JVM来总结一些问题

    俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习! 涉及到的知识点总结如下: 为什么使用接口? 接口和抽象类的区别 简单工厂模式总结 Java中new和newInstance的区别 J ...

  9. 抽象类 VS 接口

    引言 接口和抽象类是面向对象编程(OOP, Object Oriented programming)中两个绕不开的概念,二者相似而又有所不同.接下来,我们来了解二者的概念并比较它们的异同. 什么是抽象 ...

随机推荐

  1. Python函数篇:装饰器

    装饰器本质上是一个函数,该函数用来处理其他函数,它可以让其他函数在不需要修改代码的前提下增加额外的功能,装饰器的返回值也是一个函数对象.它经常用于有切面需求的场景,比如:插入日志.性能测试.事务处理. ...

  2. oracle数据库管理系统常见的错误(二)

    oracle数据库,对于新手来说总会遇到这样的问题: 相信大家都遇到了这样的问题,说实话,我曾经就遇到过这样的问题,但是不好意思问旁边的技术大咖,都有点怀疑人生了,然后自己在网上去查找原因,结果发现, ...

  3. 四、VueJs 填坑日记之搭建Axios接口请求工具

    上一章,我们认识了项目的目录结构,以及对项目的目录结构做了一些调整,已经能把项目重新跑起来了.今天我们来搭建api接口调用工具Axios.Vue本身是不支持ajax调用的,如果你需要这些功能就需要安装 ...

  4. 天龙八步"细说浏览器输入URL后发生了什么

    本文摘要: 1.DNS域名解析: 2.建立TCP连接: 3.发送HTTP请求: 4.服务器处理请求: 5.返回响应结果: 6.关闭TCP连接: 7.浏览器解析HTML: 8.浏览器布局渲染: 总结 输 ...

  5. javascript第二章--变量、作用域和内存问题

    ① 基本类型和引用类型的值 ② 执行环境及作用域 ③ 垃圾收集

  6. Spring JDBC 示例

    在使用普通的 JDBC 数据库时,就会很麻烦的写不必要的代码来处理异常,打开和关闭数据库连接等.但 Spring JDBC 框架负责所有的低层细节,从开始打开连接,准备和执行 SQL 语句,处理异常, ...

  7. 使用Recovery Services备份文件及文件夹

    1.创建恢复服务保管库 2.在backup项中选择本地,备份文件和文件夹选项 3.根据提示下载Agent及保管库凭据 4.在文件服务器上安装Agent 5.选择"继续注册"项,并添 ...

  8. SSH框架的多表查询(方法二)增删查改

     必须声明本文章==>http://www.cnblogs.com/zhu520/p/7773133.html  一:在前一个方法(http://www.cnblogs.com/zhu520/p ...

  9. 前端面试题:css相关面试题

    CSS 选择器中,元素选择器和类选择器的区别是什么? 元素选择器是最常见的 CSS 选择器,即,文档的元素就是最基本的选择器.选择器通常是某个 HTML 元素,比如 <p>.<h1& ...

  10. npoi导入导出

    NPOI是指构建在POI 3.x版本之上的一个程序,NPOI可以在没有安装Office的情况下对Word或Excel文档进行读写操作. NPOI是一个开源的Java读写Excel.WORD等微软OLE ...