一. 抽象类

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. java中null 关键字

    Java中,null是一个关键字,用来标识一个不确定的对象.null常见意义:一.null是代表不确定的对象  Java中,null是一个关键字,用来标识一个不确定的对象.因此可以将null赋给引用类 ...

  2. mybatis关联映射

    多对一: <!-- 方法一: --> <select id="getNewsListByPage" parameterType="com.zqc.sha ...

  3. angular学习笔记(二十八-附1)-$resource中的资源的方法

    通过$resource获取到的资源,或者是通过$resource实例化的资源,资源本身就拥有了一些方法,$save,$delete,$remove,可以直接调用来保存该资源: 比如有一个$resour ...

  4. [LeetCode] Count The Repetitions 计数重复个数

    Define S = [s,n] as the string S which consists of n connected strings s. For example, ["abc&qu ...

  5. 【swift学习笔记】六.访facebook登录页面

    代码最下边有下载地址. 做这个demo的主要心得就是自适应所有的屏幕,要先布局大的框架,再一步一步设置小的细节. 看一下效果 再看一下自动适应所有屏幕的效果: keyboard打开时整个frame上移 ...

  6. IT培训行业揭秘(二)

    培训机构与高校之间是怎么"勾结"的? 每一个做院招的培训机构通常会有一个“院校关系”部门,这个部门就是专门为培训机构做疏通培训班与高校之间的关系的,通常这个部门都会拥有一张各大高校 ...

  7. Apache问题处理服务器访问不了

    1. 查看apache的错误日志 我的apache日志文件目录 /var/log/httpd/error.log [Sun Nov 20 21:17:24 2016] [error] server r ...

  8. spring定时器,定时器一次执行两次的问题

    Spring 定时器 方法一:注解形式 配置文件头加上如下: xmlns:task="http://www.springframework.org/schema/task" htt ...

  9. UIDynamic--动力元素行为:UIDynamicItemBehavior

    属性分析: @property (nonatomic, readonly, copy) NSArray* items; @property (readwrite, nonatomic) CGFloat ...

  10. 从linux0.11中起动部分代码看汇编调用c语言函数

    上一篇分析了c语言的函数调用栈情况,知道了c语言的函数调用机制后,我们来看一下,linux0.11中起动部分的代码是如何从汇编跳入c语言函数的.在LINUX 0.11中的head.s文件中会看到如下一 ...