抽象类

用abstract关键字来修饰一个类时,这个类就叫抽象类,用abstract关键字来修饰一个方式时,这个方法就是抽象方法。当一个类继承的父类是抽象类的话,需要我们把抽象类中的所有抽象方法全部实现。那为什么要用抽象类呢?当父类的一些方法不能确定时,可以先在抽象类里定义抽象方法。

注意事项

Ⅰ.抽象类不能被实例化

Ⅱ.抽象类不一定要包含abstract方法。

Ⅲ.一旦类包含了abstract方法,则这个类必须声明为abstract

Ⅳ.抽象类不能有主体

实例

 package com.beekc.www;

 public class Beekc {
public static void main(String[] args) {
Animal an = new Dog();
an.cry();
an = new Cat();
an.cry();
}
} //抽象类
abstract class Animal
{
private int age;
private String name;
//抽象方法
abstract public void cry(); } class Cat extends Animal
{
//继承了Animal,一点要实现cry方法
public void cry()
{
System.out.println("猫猫,喵喵叫~");
}
} class Dog extends Animal
{
//继承了Animal,一点要实现cry方法
public void cry()
{
System.out.println("狗狗,汪汪叫~");
}
}

运行结果

接口

接口就是给出一些没有内容的方法,封装到一起,到某个类要使用的时候,在根据具体情况把这些方法写出来。接口是更加抽象的抽象的类,抽象类里的方法可以有方法体,接口里的所有方法都没有方法体。接口体现了程序设计的多态和高内聚低偶合的设计思想。

注意事项

Ⅰ.接口不能被实例化

Ⅱ.接口中所有的方法都不能有主体

Ⅲ.一个类可以实现多个接口

Ⅳ.接口中可以有变量,但变量不能用private和protected修饰

Ⅴ.一个接口不能继承其他的类,但是可以继承别的接口

实例

 package com.beekc.www;

 //定义一个叫Usb的接口,用interface关键字
interface Usb
{
int a= 1;
//定义两个方法
public void start();
public void stop();
} //相机类继承一个接口,用implements关键字
class Camera implements Usb
{
//继承了接口,一定要Usb接口里的方法
public void start()
{
System.out.println("我是相机,开始工作了!");
}
public void stop()
{
System.out.println("我是相机,停止工作了!");
}
} //手机类继承一个接口,用implements关键字
class Phone implements Usb
{
//继承了接口,一定要Usb接口里的方法
public void start()
{
System.out.println("我是手机,开始工作了!");
} public void stop()
{
System.out.println("我是手机,停止工作了!");
}
} //计算机
class Computer
{
//开始使用接口
public void useUsb(Usb usb)
{
usb.start();
usb.stop();
}
} public class Beekc {
public static void main(String[] args) {
System.out.println(Usb.a);
Computer computer = new Computer();
Camera camera = new Camera();
Phone phone = new Phone();
computer.useUsb(camera);
computer.useUsb(phone);
}
}

运行结果

JAVA面向对象 - 抽象类、接口的更多相关文章

  1. Java面向对象:接口

    Java面向对象之接口 什么是接口:接口是一种规范和标准,他们可以约束类的行为,是一些方法特征的集合 语法: [修饰符] interface 接口名 extends 父接口1,夫接口2....... ...

  2. JavaSE入门学习21:Java面向对象之接口(interface)(二)

    一接口实现的多态 在上一篇博文:JavaSE入门学习20:Java面向对象之接口(interface)(一)中提到了接口的实现存在多态性,那么 这一篇主要就要分析接口实现的多态. 实例一 Test.j ...

  3. python面向对象 : 抽象类(接口类),多态,封装(私有制封装)

    一. 抽象类(接口类) 与java一样, python也有抽象类的概念但是同样需要借助模块实现,抽象类是一个特殊的类, 它的特殊之处在于只能被继承, 不能被实例化. 从设计角度去看, 如果类是从现实对 ...

  4. JavaSE入门学习20:Java面向对象之接口(interface)(一)

    一Java接口 接口(英文:interface)是抽象方法和常量值的集合,在Java编程语言中是一个抽象类型,接口通常以interface来声 明.类是一种详细实现体.而接口定义了某一批类所须要遵守的 ...

  5. 【学习笔记】--- 老男孩学Python,day18 面向对象------抽象类(接口类), 多态, 封装

    抽象类,接口类 Python没有接口这个概念 抽象类(接口类): 目的是制定一个规范 要学会归一化设计,有重复的东西就要想把它们合并起来 from abc import ABCMeta, abstra ...

  6. Java面向对象之 接口: [修饰符] interface 接口名 {...};子接口:[修饰符] interface 接口名 extends 父接口,父接口2...{...}

    1.什么是接口? 类比抽象类,把功能或者特性类似的一类 抽象的更彻底,可以提炼出更加特殊的"抽象类"----接口 2.如何定义接口 语法:  [修饰符] interface 接口名 ...

  7. java面向对象--抽象类和接口

    如果某个父类只知道其子类应该包含哪些方法,但无法知道如何实现这些方法,同时要使用多态的特性,怎么办? 抽象方法:关键字abstract允许在一个类中创建一个或多个没有方法体的方法--只提供方法签名,但 ...

  8. Java面向对象—抽象类和接口

    本文引用海子的一篇文章:http://www.cnblogs.com/dolphin0520/p/3811437.html 一.抽象类 在了解抽象类之前,先来了解一下抽象方法.抽象方法是一种特殊的方法 ...

  9. Java面向对象---抽象类与接口

    final关键字 1.final关键字在java中被称为完结器,表示最终的意思: 2.final能声明类.方法.属性: 3.使用final声明的类不能被继承,使用final声明的方法不能被重写,使用f ...

  10. java 面向对象抽象类和接口

    1.abstract:可以修饰类和方法,被abstract修饰过的称为抽象类和抽象方法. 抽象类: 除了不可以创建对象, 其他和普通类一致. 可以有成员方法.静态方法和构造方法(提供给子类调用)等. ...

随机推荐

  1. Xmind8 Pro 破解教程(序列号|破解文件)

    最近需要打开文件后缀名为.xmind的文件,所以下载了Xmind8 .打开以后想要导出,奈何普通版本只能导出.txt文本文档,所以只好动手pj.话不多说看下边.一.下载XMindCrack.jar文件 ...

  2. springmvc html与jsp解析器

    1. 配置多个视图解析器 InternalResourceViewResolver内置了jsp解析器,用于解析jsp页面 此处我们使用了InternalResourceViewResolver,其有一 ...

  3. 如何优雅地打印一个Java对象?

    你好呀,我是沉默王二,一个和黄家驹一样身高,和刘德华一样颜值的程序员.虽然已经写了十多年的 Java 代码,但仍然觉得自己是个菜鸟(请允许我惭愧一下). 在一个月黑风高的夜晚,我思前想后,觉得再也不能 ...

  4. LeetCode 381. Insert Delete GetRandom O(1) - Duplicates allowed O(1) 时间插入、删除和获取随机元素 - 允许重复(C++/Java)

    题目: Design a data structure that supports all following operations in averageO(1) time. Note: Duplic ...

  5. [白话解析] Flink的Watermark机制

    [白话解析] Flink的Watermark机制 0x00 摘要 对于Flink来说,Watermark是个很难绕过去的概念.本文将从整体的思路上来说,运用感性直觉的思考来帮大家梳理Watermark ...

  6. 微服务之docker(二)

    一.SpringCloud/SpringBoot整合docker 使用docker的maven组建构建springboot应用(官方文档:https://spring.io/guides/gs/spr ...

  7. Java类加载器和双亲委派机制

    前言 之前详细介绍了Java类的整个加载过程(类加载机制详解).虽然,篇幅较长,但是也不要被内容吓到了,其实每个阶段都可以用一句话来概括. 1)加载:查找并加载类的二进制字节流数据. 2)验证:保证被 ...

  8. 如何利用开源解码项目开发js视频解码的web应用 系列

    介绍web上开发视频业务相关程序的技术演变历程 https://www.cnblogs.com/maoliangwu/articles/12046495.html 介绍ffmpeg asm.js we ...

  9. tensorflow MNIST Convolutional Neural Network

    tensorflow MNIST Convolutional Neural Network MNIST CNN 包含的几个部分: Weight Initialization Convolution a ...

  10. Codeforces_723_D

    http://codeforces.com/problemset/problem/723/D dfs找出每个湖,保存坐标和大小,按大小排序,填充湖即可,注意湖的数量最多会有1250个. #includ ...