java_抽象类
抽象类
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_抽象类的更多相关文章
- java_抽象类应用
本例子通过一个实例来具体阐述抽象类的应用,首先一个抽象类Person2,里面定义了一些人的共有属性(年龄,姓名),和抽象方法want(),want()方法来具体实现不同的人的需求(学生想要成绩,工人想 ...
- java_抽象类、接口、多态的使用
抽象类 抽象类:包含抽象方法的类. 抽象方法 : 没有方法体的方法. 使用 abstract关键字修饰方法,该方法就成了抽象方法,抽象方法只包含一个方法名,而没有方法体. 格式为:修饰符 abstra ...
- java_抽象类和接口
1.抽象类: 1.抽象类之所以被称为抽象类,就是因为它包含有抽象方法,只要含有抽象方法的类就叫抽象类. 2.抽象类中可以没有抽象方法,也可以抽象方法和非抽象方法共存. 3.抽象类和类一样是单继承的. ...
- java_接口和抽象类的区别
1. 接口只能定义抽象方法,不包含已经提供实现的方法. 抽象类可以包含普通方法 2. 接口不能定义静态方法.抽象类可以定义静态方法 3. 接口里只能定义静态常量filed,不能定义普通filed. 抽 ...
- Java_接口与抽象类
接口: 接口,英文interface,在java中,泛指供别人调用的方法或函数.接口是对行为的一种抽象. 语法: [public] interface InterfaceName{} 注意: 1)接口 ...
- java_基础_接口和抽象类
1.接口 java中接口的存在意义是:让多个继承该接口的类实现多态,让多个类有相同的特征 示例代码: interface MyInterface{ void myMethod(); } class T ...
- PHP 面向对象编程和设计模式 (1/5) - 抽象类、对象接口、instanceof 和契约式编程
PHP高级程序设计 学习笔记 2014.06.09 什么是面向对象编程 面向对象编程(Object Oriented Programming,OOP)是一种计算机编程架构.OOP 的一条基本原则是计算 ...
- 从接口、抽象类到工厂模式再到JVM来总结一些问题
俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习! 涉及到的知识点总结如下: 为什么使用接口? 接口和抽象类的区别 简单工厂模式总结 Java中new和newInstance的区别 J ...
- 抽象类 VS 接口
引言 接口和抽象类是面向对象编程(OOP, Object Oriented programming)中两个绕不开的概念,二者相似而又有所不同.接下来,我们来了解二者的概念并比较它们的异同. 什么是抽象 ...
随机推荐
- 06.十分钟学会表达式语言EL
一. 概念:MVC设计模式一个主要好处就是让jsp中的代码越来越来少,而且规定只能出现三种代码:接收属性,判断语句,迭代输出.但是,在开发中,jsp输出至少还是需要接受VO对象的,这时候为了避免导入V ...
- day2--第2章(计算机系统硬件核心知识)
第二章--计算机系统核心硬件知识 (一)互联网企业里PC服务器品牌及型号 互联网公司服务器品牌: DELL(大多数公司),HP,IBM(百度),浪潮,联想,航天联志. Dell服务器品牌: 1U = ...
- Unity 游戏框架搭建 (二十) 更安全的对象池
上篇文章介绍了,只需通过实现IObjectFactory接口和继承Pool类,就可以很方便地实现一个SimpleObjectPool.SimpleObjectPool可以满足大部分的对象池的需求.而笔 ...
- selenium元素定位
在网页自动化测试中,我们要让程序自动模拟我们的点击.输入.悬浮.拖动等操作,完成我们的测试用例组. 输入.点击.打开这样的动词,已经包含在了selenium的方法中,可以直接调用(当然你也可以自己写) ...
- Varnish 实战项目
实现基于Keepalived+Haproxy+Varnish+LNMP企业级架构 原理:缓存,又称加速器,用于加速运行速度较快的设备与较慢设备之间的通信.基于程序的运行具有局部性特征其能实现加速的功能 ...
- ajax事件请求
首先,ajax是什么? ajax是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术. ajax是一种用于创建的快速动态网页的技术. 当async:true时,表示异步执行ajax代码:当as ...
- .Net开发小技巧
.NET项目开发中的小技巧 1.不要频繁的创建对象...这个损失是巨大的...new太多了,后果比较严重. 2.打开数据库后要及时的关闭连接,如果你不能做到一个open后跟一个close,那也没关系, ...
- java 分页导出百万级数据到excel
最近修改了一个导出员工培训课程的历史记录(一年数据),导出功能本来就有的,不过前台做了时间限制(只能选择一个月时间内的),还有一些必选条件, 导出的数据非常有局限性.心想:为什么要做出这么多条件限制呢 ...
- python之optparse模块
测试例子 #!/usr/bin/env python2.7 import sys import os from optparse import OptionParser def parse_optio ...
- 关于iOS GangSDK的使用,为App快速集成社群公会模块
手上有一个自己开发的小游戏,想加一个家族系统活跃下游戏的氛围,想到这块儿可能会有大量的工作需要自己做,就偷了个懒去网上搜罗了一波,结果惊奇的发现居然真的有类似的服务,并且还是免费的,所以决定入坑尝试一 ...