抽象类使用 abstract 关键字修饰,该类即为抽象类。

抽象类的作用:

1、某些情况下,父类约束子类必须包含哪些方法,但不知道子类如何去实现这些方法。

2、可以从多个具有相同特征的类中抽象出一个抽象类,以这个抽象类作为子类的模板,避免子类设计的随意性。

抽象类的使用规则:

1、使用 abstract 定义抽象对象;
2、abstract 定义抽象方法,只有声明,不需要实现;
3、包含抽象方法的类是抽象类;
4、抽象类中可以包含普通的方法,也可以没有抽象方法;
5、抽象类不能直接创建,可以定义引用变量,指向子类对象;

首先先创建一个抽象类:

public abstract class Telephone {
//打电话
public abstract void call();
//发短信
public abstract void sendMessage();
}

接着分别创建两个子类继承该父类,子类必须包含父类所声明的抽象方法,否则会报错:

public class CellPhone extends Telephone{

    public void call(){
System.out.println("通过键盘来打电话");
} public void sendMessage()
{
System.out.println("通过键盘来发短信");
}
}
public class SmartPhone extends Telephone{

    public void call(){
System.out.println("通过语音来打电话");
} public void sendMessage()
{
System.out.println("通过语音来发短信");
}
}

再创建一个测试类:

public class Test {
public static void main(String[] args) {
//普通手机
Telephone cellphone = new CellPhone(); cellphone.call(); //通过键盘来打电话
cellphone.sendMessage(); //通过键盘来发短信 //智能手机
Telephone smartphone = new SmartPhone(); smartphone.call(); //通过语音来打电话
smartphone.sendMessage(); //通过语音来发短信 }
}

Java中的接口被用来继承,必为abstract,一般为public,且内部为常量和抽象方法,一个类可以实现多个接口。

首先创建一个新的接口:

public interface IPlayGame {
public String todo = "可以玩游戏";
public void playGame();
}

将SmartPhone类改写为:

public class SmartPhone extends Telephone implements IPlayGame{

    protected String name = "智能手机";

    public void call(){
System.out.println("通过语音来打电话");
} public void sendMessage()
{
System.out.println("通过语音来发短信");
} @Override
public void playGame() {
System.out.println(name + todo);
}
}

实例化并输出:

IPlayGame sp = new SmartPhone();
sp.playGame(); //智能手机可以玩游戏
在接口在使用过程当中,还经常与匿名内部类配合使用,匿名内部类就是没有名字的内部类,多用于关注实现而不关注实现类的名称。
//第一种实现方法
IPlayGame ip1 = new IPlayGame() {
@Override
public void playGame() {
System.out.println("匿名内部类的方法实现接口" + todo); //匿名内部类的方法实现接口可以玩游戏
}
};
ip1.playGame(); //调用接口方法 //第二种实现方法
new IPlayGame() {
@Override
public void playGame() {
System.out.println("匿名内部类的方法实现接口" + todo); //匿名内部类的方法实现接口可以玩游戏
}
}.playGame();

 
 

Java 中的抽象类及接口的更多相关文章

  1. Java 中,抽象类与接口之间有什么不同?

    Java 中,抽象类和接口有很多不同之处,但是最重要的一个是 Java 中限制一个 类只能继承一个类,但是可以实现多个接口.抽象类可以很好的定义一个家族类 的默认行为,而接口能更好的定义类型,有助于后 ...

  2. java中的抽象类和接口

    抽象类和接口本身让面向对象真正实现,一个好的系统可以让抽象类或者接口实现多次复用,如果出现了集成具体类那么肯定是有问题的. 抽象类和接口很相似,很多时候好像功能可以混用,java设计者赋予了很多不一样 ...

  3. 论Java中的抽象类与接口

    目录 抽象类和抽象方法 定义 与普通类的区别以及注意点: 抽象类的作用 接口 定义 示例 注意 作用 最后:接口与抽象类的异同 使用场景 借鉴 抽象类和抽象方法 定义 抽象方法和抽象类都必须被abst ...

  4. JAVA中的抽象类与接口

    抽象类 abstract class 包含抽象方法的类,叫抽象类.而抽象的概念就是抽象出共同属性:成员变量和方法.所以抽象类可以有private等多种权限的成员变量和非abstract的成员方法.当然 ...

  5. 辨异 —— Java 中的抽象类和接口

    接口优于抽象类.-- <Effective Java>(Item 18) 0. 语法区别 抽象类允许给出某些方法的实现,接口不允许: 为了实现由抽象类定义的类型(type),类必须成为抽象 ...

  6. java基础(四)-----抽象类与接口

    抽象类与接口是java语言中对抽象概念进行定义的两种机制,正是由于他们的存在才赋予java强大的面向对象的能力.他们两者之间对抽象概念的支持有很大的相似,甚至可以互换,但是也有区别. 一.抽象类 我们 ...

  7. Java学习笔记二十七:Java中的抽象类

    Java中的抽象类 一:Java抽象类: 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就 ...

  8. Java基础之抽象类与接口

    Java基础之抽象类与接口 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类.这两者有太多相似的地方,又有太多不同的地方.很多人在初学的时候 ...

  9. C++中的抽象类和接口

    1,在 C++ 语言中,并不直接支持面向对象中的抽象类和接口概念,但是 C++ 语言 却可以间接实现这些概念: 2,什么是抽象类: 1,面向对象中的抽象(其实就是分类)概念: 1,在进行面向对象分析时 ...

随机推荐

  1. delphi Pointer 转成string

    var  s: string;  p: pointer;  s := PChar(p);前提p指向的字符串要以#0结尾.

  2. Python 描述符(descriptor) 杂记

    转自:https://blog.tonyseek.com/post/notes-about-python-descriptor/ Python 引入的“描述符”(descriptor)语法特性真的很黄 ...

  3. Eclipse 常用设置

    1. eclipse中的汉字横着显示怎么解决 同一种字体有两种显示方式,比如Fixedsys Excelsior 3.01和@Fixedsys Excelsior 3.01,前一种汉字是竖着显示,后一 ...

  4. Ubuntu12.04配置静态ip地址

    Ubuntu12.04配置静态ip地址 $sudo gedit /etc/network/interfaces 原有内容只有如下两行: auto lo iface lo inet loopback 向 ...

  5. Bootstrap 3 How-To #3 布局

    对于 Web 开发来说,一个永远的话题是如何创建一个跨浏览器兼容的布局.许多年来,各种框架使用各种技术来解决这个问题.Bootstrap 使用了一个不同的方式来解决这个问题.基于 960 像素的布局 ...

  6. HDU1325

    http://acm.split.hdu.edu.cn/showproblem.php?pid=1325 #include<stdio.h> #include<algorithm&g ...

  7. 初探接口测试框架--python系列5

    点击标题下「蓝色微信名」可快速关注 坚持的是分享,搬运的是知识,图的是大家的进步,没有收费的培训,没有虚度的吹水,喜欢就关注.转发(免费帮助更多伙伴)等来交流,想了解的知识请留言,给你带来更多价值,是 ...

  8. 文件系统取证分析(第11章:NTFS概念)

    /* Skogkatt 开始翻译于2015-01-24,仅作为学习研究之用,谢绝转载. 2015-01-31更新MFT entry 属性概念. 2015-02-01翻译完成. 译注:我翻译这本书的这三 ...

  9. Flex对象的Clone & Copy浅析

    在flex中有时候会用到ObjectUtil.clone和ObjectUtil.copy方法.下面是官方API的注释. 克隆指定对象,并返回对该克隆的引用.该克隆使用本机序列化技术生成.这意味着在克隆 ...

  10. 详细讲解JAVA中的IO流

    一.流的概念        流(stream)的概念源于UNIX中管道(pipe)的概念.在UNIX中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备.外部文件等.        ...