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 ...
随机推荐
- ZBrush中的头部模型该如何进行雕刻
使用ZBrush®能够快速雕刻人物头部模型,教程只是大概介雕刻前的准备工作和一些软件基础,真正的雕刻还需要学习者具备一定的功底,本文向大家展示头部模型制作流程解析,初学者可以以它做参考拓展自己思路. ...
- BZOJ 3172: [Tjoi2013]单词 [AC自动机 Fail树]
3172: [Tjoi2013]单词 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 3198 Solved: 1532[Submit][Status ...
- [LeetCode] Russian Doll Envelopes 俄罗斯娃娃信封
You have a number of envelopes with widths and heights given as a pair of integers (w, h). One envel ...
- [LeetCode] Best Time to Buy and Sell Stock III 买股票的最佳时间之三
Say you have an array for which the ith element is the price of a given stock on day i. Design an al ...
- Html-IOS下input的样式添加不上的解决方案
问题描述: <!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml&qu ...
- Can't find any matching row in the user table
原因 更改mysql.user表之后,没有使用flush privileges命令来更新权限. 解决方案 使用flush privileges命令更新一下. 问题描述 配置mysql远程登录时,只需要 ...
- mac上安装ubuntu双系统
mac和ubuntu双系统 mac系统安装ubuntu双系统的方法, mac系统要安装ubuntu, 必须使用u盘作为启动盘, 在mac启动的时候引导mac安装ubuntu, 下面为详细的安装方法: ...
- 【转】封装原生JS实现Ajax
function createXHR() { if (window.XMLHttpRequest) { //IE7+.Firefox.Opera.Chrome 和Safari return new X ...
- C#-WebForm-★★★ 分页展示 ★★★
什么是"分页展示"? 分页展示就是将庞大的数据分成若干页,每页展示若干条数据,向用户展示数据 流程:客户端浏览器向服务器发送查询请求 → 服务器从数据库查询数据 → 服务器转换成代 ...
- 分享一种容易理解的js去重排序方法
<script> var arr=[1,8,6,4,88,22,99,4,6,86,5,58,89,5]; //先使用sort()函数去重 var a=arr.sort(function ...