一. 抽象类

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. .NET中集合已修改;可能无法执行枚举操作 的解决办法

    foreach是取只读的,在取的时候数据不能变(包括修改,删除,添加等).要避免这个问题,就应该使用for循环. https://msdn.microsoft.com/zh-cn/library/tt ...

  2. Junit mockito 测试Controller层方法有Pageable异常

    1.问题 在使用MockMVC+Mockito模拟Service层返回的时候,当我们在Controller层中参数方法调用有Pageable对象的时候,我们会发现,我们没办法生成一个Pageable的 ...

  3. Favorites of top 10 rules for success

    Dec. 31, 2015 Stayed up to last minute of 2015, 12:00am, watching a few of videos about top 10 rules ...

  4. kettle中含有参数传递的定时任务

    (1)新建一个作业(新建->作业),并在控制面板右键: (2)设置一个命令参数: (3)把作业的参数传递给转换: (4)在转换中右键设置转换属性: (5)接收作业中设置的传递参数: (6)参数的 ...

  5. TimerToPdf

    1.----------------TimerEvent-------------------var today:Date=new Date();hours == today.hours;minute ...

  6. 机器学习之sklearn——聚类

    生成数据集方法:sklearn.datasets.make_blobs(n_samples,n_featurs,centers)可以生成数据集,n_samples表示个数,n_features表示特征 ...

  7. [LeetCode] Scramble String 爬行字符串

    Given a string s1, we may represent it as a binary tree by partitioning it to two non-empty substrin ...

  8. SpringMVC org.xml.sax.SAXParseException: cvc-complex-type.2.4.c 报错处理方式

    使用SpringMVC的过程中需要访问静态文件,即在spring-servlet.xml文件中添加了 <mvc:default-servlet-handler /> 标签,以开启Sprin ...

  9. python基础补漏-01

    python对象的方法 1.python的特性:一切皆对象 2 type(obj) 查看对象的类型 3 dir(obj)查看类中所有详细的功能 4 help(obj) 查看类中所有详细的功能 类中的方 ...

  10. jquery的几种ajax提交方式

    $.post( url, function(data){ if(data.retcode == "0"){ alert(data.retmsg); }else{ alert(dat ...