Java Abstract Class & Interface

时间:2022-09-12 14:12:14

一. 抽象类

1. 抽象类:包含了一个抽象方法的类就是抽象类

2. 抽象方法:声明而未被实现的方法,用关键字abstract声明

3. 抽象类被子类继承,子类(如果不是抽象类)必须重写(override)抽象类中的所有抽象方法

4. 定义格式:

abstract class className{
  属性
  方法
  抽象方法
}

5. 抽象类不能被直接实例化,要通过其子类进行实例化

抽象类的应用

 package com.bruceyo.absdemo;

 //抽象类的应用
abstract class Person{
private int age;
private String name;
public Person(int age, String name){
this.age = age;
this.name = name;
}
public void tell(){ } public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public abstract void want(); }
class Student extends Person{
private int score; public int getScore() {
return score;
} public void setScore(int score) {
this.score = score;
} public Student(int age, String name, int score) {
super(age, name);
this.score = score;
// TODO Auto-generated constructor stub
} @Override
public void want(){
System.out.println("Name:"+getName()+", Age:"+getAge()+", Score:"+getScore());
} }
class Worker extends Person{
private int money; public int getMoney() {
return money;
} public void setMoney(int money) {
this.money = money;
} public Worker(int age, String name, int money) {
super(age, name);
this.money = money;
// TODO Auto-generated constructor stub
} @Override
public void want(){
System.out.println("Name:"+getName()+", Age:"+getAge()+", money:"+getMoney());
} } public class AbsDemo { public static void main(String[] args) {
// TODO Auto-generated method stub
Student student = new Student(55,"Bruce",4);
student.want();
Worker worker = new Worker(66, "Json", 6666);
worker.want(); } }

Abstract class

二. 接口

1. 接口可以理解为一种特殊的类,里面全部是由全局常量和公共的抽象方法所组成

2. 定义格式:

interface interfaceName{
全局常量 //e.g. public static final int AGE = 100;
抽象方法 //e.g. public abstract void tell();
}

3. 接口实现必须通过子类,使用关键字implements, 而且接口是可以多实现的

4. 一个类可以同时继承抽象类和实现接口

5. 一个接口不能继承一个抽象类,但是可以通过extends关键字同时继承多个接口,实现接口多继承

接口的应用

package com.bruceyo.absdemo;

interface USB{   //制定一个标准,每一个USB必须按照这个标准进行工作
void start();//可省略public abstract
void stop();
}
class C{ //接口的实例
public static void work(USB u){
u.start();
System.out.println("Working");
u.stop();
}
} class USBDisk implements USB{
public void start(){
System.out.println("USBDisk start Working");
}
public void stop(){
System.out.println("USBDisk stop Working");
}
}
class Printer implements USB{
public void start(){
System.out.println("Printer start Working");
}
public void stop(){
System.out.println("Printer stop Working");
}
}
public class InterfaceDemo { public static void main(String[] args) {
// TODO Auto-generated method stub
C.work(new USBDisk());
C.work(new Printer());
} }

Interface example

多态性:

方法的重载和重写

对象的多态性

向上转型:程序自动完成

向下转折:强制类型转换

Java Abstract Class & Interface的更多相关文章

  1. 转:Java中abstract和interface的区别

    转自:Java中abstract和interface的区别 abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java ...

  2. Java abstract class 和 interface 的区别

    Java abstract class 和 interface 的区别 1. abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制 2. 以Door的抽象概 ...

  3. Java开发之abstract 和 interface的区别

    Java开发abstract 和 interface的区别 java开发里面经常会用到虚函数和接口,这两者的区别是什么呢? abstract: 子类里面只能继承一个父类 interface: 子类可以 ...

  4. 【转载】java abstract class和interface的区别

    转载:https://blog.csdn.net/b271737818/article/details/3950245 在Java语言中,abstract class和interface是支持抽象类定 ...

  5. Java中的一些关键字:static,final,和abstract,interface,以及访问修饰符说明

    1.关键字可以修饰的说明: 关键字 属性(是否可修饰) 方法(是否可修饰) 类(是否可修饰) static 是 是 是 final 是 是 是 abstract 否 是 是 2.关键字的意义: 关键字 ...

  6. abstract与interface之房祖名张默版

    最近把java基础知识拿出来看看,看到abstract与interface的时候,觉得有点模糊,好像面试官也喜欢问这个问题.我在百度了查了好长时间,觉得讲算比较清楚的是那篇讲 Door,然后想要带个报 ...

  7. AbStract 和Interface 方法是否能用Static修饰,为什么?

    Abstract 和Interface 方法是否能用Static修饰,为什么? interface中不能含有Static方法,属性,成员变量. Abstract中可以有Static方法,属性,成员变量 ...

  8. java abstract类和abstract方法

    Example5_12.java abstract class A { abstract int add(int x,int y); int sub(int x,int y) { return x-y ...

  9. <Java><Multi-thread><Lock interface>

    Overview 介绍java的lock interface. Motivation java拥有像synchronized这样的内置锁,那为什么还需要lock这样的外置锁呢? 首先,性能不是选择sy ...

随机推荐

  1. Python 变量范围

    1.本地变量,全局变量 Python 中有2种变量作用范围本地变量,全局变量. 变量搜索路径是:本地变量->全局变量 它们简而言之就是本地变量的值只在本地作用范围有效.而全局变量的作用范围是全局 ...

  2. [No000001]一切都是最好的安排

    <一切都是最好的安排> 从前有一个国家,地不大,人不多,但是人民过着悠闲快乐的生活,因为他们有一位不喜欢做事的国王和一位不喜欢做官的宰相. 国王没有什么不良嗜好,除了打猎以外,最喜欢与宰相 ...

  3. git 克隆项目 与 分支简单操作

    git clone http://abcde.com/myproject/abc.git 克隆远程项目到本地githome文件夹git branch -a 查看所有分支 包括远程和本地 *号开头表示当 ...

  4. hdu 4607 &lpar;树形DP&rpar;

    当时比赛的时候我们找出来只要求出树的最长的边的节点数ans,如果要访问点的个数n小于ans距离直接就是n-1 如果大于的话就是(n-ans)*2+ans-1,当时求树的直径难倒我们了,都不会树形dp ...

  5. ServiceCallSite

    ServiceCallSite 通过上一篇的介绍我们应该对实现在ServiceProvider的总体设计有了一个大致的了解,但是我们刻意回避一个重要的话题,即服务实例最终究竟是采用何种方式提供出来的. ...

  6. debug和release下PostThreadMessage的异同

    MFC中创建线程分为工作线程和UI线程.其中UI线程可以通过继承CWinThread进行创建. 创建函数如下: CWinThread *m_pRecogThread;//语音识别线程 m_pRecog ...

  7. LightOJ1341 Aladdin and the Flying Carpet

    题意 给一对数字 a,b ,a是一个长方形的面积,问有多少种整数的边的组合可以组成面积为a的长方形,要求最短的边不得小于b 数据组数T<=4000, a,b<=10^12 Solution ...

  8. angularjs常用事件

    1. 视图模板加载完毕 $scope.$on('$viewContentLoaded', function() { alert('view template loaded'); });

  9. MES模块

    基础数据管理:产品模型.工厂模型.工艺模型 仓储管理 成本管理 绩效管理 看板管理 日志管理 设备管理:工装管理.设计器具管理.设备保养管理.设备备件管理.设备采集管理.设备点检管理.设备故障管理.设 ...

  10. 愛拼才會贏--IPA--闽南语

    闽南语经典曲目.