抽象类
定义
在Java面向对象当中,所有的对象都是用过类进行描绘的,但是并不是所有的类都是用来描绘对象的,如果一个类没有包含足够多的信息来描述一个具体的对象,这样的类就是抽象类。
当定义一个类时,常常需要定义一些成员方法描述类的行为特征,但有时这些方法的实现方式是无法确定的。例如,在定义Animal类时,shout( )方法用于描述动物的叫声,但是不同动物的叫声是不同的,因此在shout( )方法中无法准确地描述动物的叫声。
抽象方法以及抽象类的实现方式
public abstract 返回值类型 方法名(参数);
abstract class 类名 {}
实例
abstract class Graphgics{
public abstract void draw();
}
class Cycle extends Graphgics {
@Override
public void draw() {
}
}
class Flower extends Graphgics {
@Override
public void draw() {
}
}
public class TestYang {
public static void drawMap(Graphgics Graphgics){
Graphgics.draw();
}
public static void main (String[] args){
drawMap(new Cycle());
drawMap(new Flower());
}
}
接口
定义
在软件工程中,接口泛指供别人调用的方法。在Java中接口是一个抽象类型,比抽象类更加抽象,是抽象方法的集合。一个类通过继承接口的方式,从而继承接口的抽象方法。从定义上看,接口只是一个集合,并不是类。类描述了属性和方法,而接口只包含方法(未实现的方法)和常量。
代码实现方式
public interface 接口名称 {
//声明常量
//抽象方法
}
实例
public interface Jumpping {
public abstract void jump();
}
public abstract class Animal {
private String name;
private int age;
public Animal() {
}
public Animal(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public abstract void eat();
}
public class Dog extends Animal implements Jumpping{
public Dog() {
}
public Dog(String name, int age) {
super(name, age);
}
@Override
public void eat() {
System.out.println("狗吃骨头");
}
@Override
public void jump() {
System.out.println("狗可以跳高了");
}
}
public class AnimalDemo {
public static void main(String[] args) {
Animal a2=new Dog("旺仔",4);
System.out.println(a2.getName()+","+a2.getAge());
a2.eat();
Jumpping j2=new Dog();
j2.jump();
}
}
二者区别
二者相同点
1、都可以被继承
2、都不能被实例化
3、都可以包含方法声明
4、派生类必须实现未实现的方法