1.抽象类(用abstract关键字修饰声明)
(1)包含抽象方法的抽象类也必须用abstract关键字来声明。
(2)抽象类中来声明的抽象构造方法必须在子类中调用(抽象方法必须包含于抽象类)。
抽象类的特点:
(1)不能直接被实例化,也不能直接用new关键字来产生对象。
(2)只需要声明,不需实现。
(3)抽象子类必须覆盖所有抽象方法后才能被实例化。
(4)含有抽象方法的类必须被声明为抽象类。
以下代码是抽象类的应用
abstract class Person
{ String name; int age; String occupation; //声明一个抽象方法talk; public abstract String talk();}//Student继承自Person类class Student extends Person{ public Student(String name,int age,String occupation) { this.name=name; this.age=age; this.occupation=occupation; } //覆写talk() public String talk() { return "学生--姓名:"+this.name+",年龄:"+this.age+",职业:"+this.occupation+"!"; }}//Worker继承自Person类class Worker extends Person{ public Worker(String name,int age,String occupation) { this.name=name; this.age=age; this.occupation=occupation; } //覆写talk() public String talk() { return "工人--姓名:"+this.name+",年龄:"+this.age+",职业:"+this.occupation+"!"; }}public class Java {public static void main(String args[])
{ Student s=new Student("陈昆明",22,"学生"); Worker w=new Worker("李四",52,"工人"); System.out.println(s.talk()); System.out.println(w.talk()); }}运行结果:
2.接口
(1)格式
interface 接口名称
{
final 数据类型 成员名称=常量 //数据成员必须赋初值
abstract(抽象方法声明时关键字可以省略) 返回值数据名称 方法名(参数) //抽象方法
}
class 类名称 implement 接口A,接口B
{······}
(注1:抽象方法里没有定义方法的主体,借口哦与一般类一样,但是方法必须为抽象方法)
(注2:与抽象方法不同的是,一个类可以继承多个接口。再覆盖抽象方法时,在子类中不用abstract声明。)
接口的应用代码:
interface Person
{ String name="Left涅槃"; int age=22; String occupation="学生"; //声明一个抽象方法talk() public abstract String talk();}//Student类实现Person类class Student implements Person{ //覆写talk()方法 public String talk() { return "学生-->姓名:"+name+",年龄:"+age+",职业:"+occupation+"!"; }}public class Javajeikou1 { public static void main(String args[]) { Student s=new Student(); System.out.println(s.talk()); }}运行截图: