Java Abstract Class & Interface
一. 抽象类
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的更多相关文章
- 转:Java中abstract和interface的区别
转自:Java中abstract和interface的区别 abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java ...
- Java abstract class 和 interface 的区别
Java abstract class 和 interface 的区别 1. abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制 2. 以Door的抽象概 ...
- Java开发之abstract 和 interface的区别
Java开发abstract 和 interface的区别 java开发里面经常会用到虚函数和接口,这两者的区别是什么呢? abstract: 子类里面只能继承一个父类 interface: 子类可以 ...
- 【转载】java abstract class和interface的区别
转载:https://blog.csdn.net/b271737818/article/details/3950245 在Java语言中,abstract class和interface是支持抽象类定 ...
- Java中的一些关键字:static,final,和abstract,interface,以及访问修饰符说明
1.关键字可以修饰的说明: 关键字 属性(是否可修饰) 方法(是否可修饰) 类(是否可修饰) static 是 是 是 final 是 是 是 abstract 否 是 是 2.关键字的意义: 关键字 ...
- abstract与interface之房祖名张默版
最近把java基础知识拿出来看看,看到abstract与interface的时候,觉得有点模糊,好像面试官也喜欢问这个问题.我在百度了查了好长时间,觉得讲算比较清楚的是那篇讲 Door,然后想要带个报 ...
- AbStract 和Interface 方法是否能用Static修饰,为什么?
Abstract 和Interface 方法是否能用Static修饰,为什么? interface中不能含有Static方法,属性,成员变量. Abstract中可以有Static方法,属性,成员变量 ...
- 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 ...
- <Java><Multi-thread><Lock interface>
Overview 介绍java的lock interface. Motivation java拥有像synchronized这样的内置锁,那为什么还需要lock这样的外置锁呢? 首先,性能不是选择sy ...
随机推荐
- mysql数据库主从及主主复制配置演示
实验系统:CentOS 6.6_x86_64 实验前提:提前准备好编译环境,防火墙和selinux都关闭 实验说明:本实验共有2台主机,IP分配如拓扑 实验软件:mariadb-10.0.20 实验拓 ...
- svn cleanup 执行失败时,可以勾选 break locks,
- java数组
1.java是否可以像c一次样搞个不定长数组? 不可以那样写,那样写是非法的.数组构造的时候必须指定长度,因为JVM要知道需要在堆上分配多少空间.也就是要初始化数组的话让JVM知道要给数组分配多少空间 ...
- C Primer Plus 学习体会
本月刚刚开始学习<C primer plus>,之前课上草草学过一遍,讲到指针就结束了.现在重新开始看感觉难度不大只是刚开始接触有些语言细节比较琐碎.学习这一周的体会如下: 诸多前辈推荐的 ...
- [LeetCode] Binary Tree Inorder Traversal 二叉树的中序遍历
Given a binary tree, return the inorder traversal of its nodes' values. For example:Given binary tre ...
- 用于科学计算的Python库
Matplotlib NumPy Pandas SciPy SymPy
- 【日常操作记录】Asp.Net Core 的一些基本操作或属性
用于记录在项目中使用到的方法.属性.操作,持续更新中 静态文件的使用 在项目中静态文件的使用需要在Startup中的Configure方法中增加: //使用静态文件 app.UseStaticFile ...
- Python学习--Python简介
Python 简介 Python是一种解释型.编译性.面向对象.动态数据类型的高级程序设计语言.Python由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年. P ...
- echarts-在现实标题中显示百分比
如图:需要在标题显示所占百分比 使用方式:途中标记部分 series : [{ name: '类型', type: 'pie', radius : '55%', center: ['50%', '60 ...
- [展示]手把手教你如何diy门户幻灯片
第一步后台新建页面:这个就不用说了大家都会 新建后FTP里面会出现如下一个模板页面 第二步从ftp里面下载 template的index.htm文件 给首页模板页面添加JS代码 如下 将这段jS ...