版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011466469/article/details/88803843
1、什么是抽象类?在java面向对象的概念中,抽象类是没有过多信息描述具体的对象一类。下面看代码分析抽象类有哪些特点:
public abstract class AbstractDemo {
/**
* 抽象类定义的关键字 abstract, 有抽象方法的类一定是抽象类 如果一个类没有描述具体事务的个体就是抽象类,
* 抽象类里可以是抽象方法,非抽象方法
*
*/
int speed;
// 抽象方法没有方法体,只有方法名
public abstract void increaseSpeed(int initspeed);
// 构造方法,
public AbstractDemo(int startSpeed) {
speed = startSpeed;
System.out.println("这是抽象类的构造方法");
}
// 普通方法
public void show(int endspeed) {
System.out.println("抽象类的普通方法~");
}
}
2、如何使用抽象类的方法?想使用抽象类就要先继承它:
public class UseAbstractDemo extends AbstractDemo {
/**
* 抽象类不能被实例化、不能创建对象,可以被继承extends 子类继承父类,可以调用父类的任何方法, 但是必须实现父类未实现的抽象方法
* 在Java中抽象类表示的是一种继承关系,一个类只能继承一个抽象类,而一个类却可以实现多个接口
*
* @param startSpeed
*/
// 构造方法继承抽象类的方法
public UseAbstractDemo(int startSpeed) {
super(startSpeed);
// 抽象不能被实例化。可以通过super关键字,访问其他方法
super.show(23);
// TODO Auto-generated constructor stub
}
// 重写抽象类的抽象方法
@Override
public void increaseSpeed(int initspeed) {
// TODO Auto-generated method stub
System.out.println("重写父类的方法");
}
}
3、子类继承父类,调用父类方法,测试代码如下:
// 子类继承父类,调用所有方法,必须实现父类有的抽象方法
public static void main(String [] args){
UseAbstractDemo ua=new UseAbstractDemo(1);
ua.increaseSpeed(12);
}
4、什么是接口?在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。
public interface InterfaceDemo1 {
/**
* 接口是抽象方法的集合,一个类通过继承接口来继承接口的抽象方法 接口无法被实例化,但是可以被实现,
*
* 与抽象类的区别 : 抽象类中的方法可以有方法体,就是能实现方法的具体功能,但是接口中的方法不行。
* 抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是 public static final 类型的。
* 接口中不能含有静态代码块以及静态方法(用 static 修饰的方法),而抽象类是可以有静态代码块和静态方法。
* 一个类只能继承一个抽象类,而一个类却可以实现多个接口,实现接口重现抽象的方法;
*
*
*/
// public static final固定写法,可以不写
public static final int i = 4;
String str = "我是接口!";
// 抽象方法必须是抽象类,public abstract 也是固定写法,可以不写;
public abstract void show1(String str);
// 所以下面这些都是抽象方法
public void show2();;
void show3();
}
5、再来创建第二个接口:
public interface InterfaceDemo2 {
// 定义一个也是抽象类
String str="我是接口2";
void show4();
}
6、现在再创建一个类实现上面两个接口的抽象方法:
public class ImplementDemo implements InterfaceDemo1, InterfaceDemo2 {
@Override
public void show1(String str) {
// TODO Auto-generated method stub
System.out.println("这是接口1抽象方法的实现");
}
// 实现接口的方法,需要实现接口所有的抽象类方法,
@Override
public void show1(String str) {
// TODO Auto-generated method stub
System.out.println("这是接口2抽象方法的实现");
}
// 下面抽象方法的空实现,但是必须要有方法体
@Override
public void show2() {
// TODO Auto-generated method stub
}
@Override
public void show3() {
// TODO Auto-generated method stub
}
}
7、测试一下,上面的类实现的接口的方法:
public class Demo {
public static void main(String[] args) {
// 多态,同样的对象有两种类型,继承或是实现的关系
InterfaceDemo1 myInterface = new ImplementDemo();
ImplementDemo myIneterface2 = new ImplementDemo();
myInterface.show1("interface接口类型(也可以是实现接口的类) 变量名=new 实现接口的类");
myIneterface2.show1("str");
}
}