Java中的abstract详解

来源:互联网 发布:valgrind Windows 编辑:程序博客网 时间:2024/05/16 05:45

Java中的abstract详解

abstract关键字只能用于修饰类和方法。用来表明所定义的类或方法时未实现的。

abstract定义

abstract class Person {//抽象类public abstract String getDescription();//抽象方法}

注意:
包含一个或多个抽象方法的类本身必须被声明为抽象的。
类即使不含抽象方法,也可以声明为抽象类。
抽象类不能被实例化。
抽象类可以包含具体的数据和具体的方法。

abstract class Person {//抽象类private int id = 10;//抽象类可以包含具体的数据public abstract String getDescription();//抽象方法public int getId(){//抽象类可以包含具体的方法return id;}}

但是建议将通用的域和方法(不论是否是抽象的)放在超类中。

public class Main {public static void main(String[] args){Person my;Person mine = new Person();//error 抽象类不能被实例化}}

总结:


抽象方法充当占位的作用,它们的具体实现在子类中。
扩展抽象类有两种方法:
一是在子类中定义部分抽象方法或抽象方法也不定义,这样的子类必须也定义为抽象类
二是在子类中定义全部的抽象方法,这样的子类不必是抽象的。

简单示例:


/** * 抽象类 * @author wangcan * */abstract class Person {//抽象类private String name;public Person(String name) {this.name = name;}public abstract String getDescription();//抽象方法public String getName(){return name;}}class Student extends Person{private String school;public Student(String name,String school) {super(name);this.school = school;}@Overridepublic String getDescription() {return "a student "+super.getName()+" study in" + school;}}

public class Main {public static void main(String[] args){Person[] people = new Person[2];people[0] = new Student("小强","CSDN");people[1] = new Student("小明", "CUMT");for(Person p:people){System.out.println(p.getDescription());}}}





0 0
原创粉丝点击