标签:面向对象 接口 抽象类 extends implements
抽象类:包含抽象方法的类,相比于普通类,他多了一个抽象方法。
抽象方法:只声明但是没有实现的方法,用abstract关键字来定义。
未实现的举例:
class A
{
private String name ;
public void print()
}在类中声明的方法,有{}则说明有方法体,则实现;没有{},则未实现。
包含一个抽象方法的类必须是抽象类
抽象类和抽象方法都使用abstract关键字声明
抽象方法只需要声明不需要实现
抽象类必须被子类继承,子类(不是抽象类)必须覆写全部的抽象方法
abstract class A
{
private String name ;
public abstrct void print();
}给出实例化代码
//本例是对抽象类的测试
abstract class A
{
public static final String flag = "china" ;
private String name = "Tyrion";
public String getName()
{
return this.name;
}
public abstract void print();
}
//继承并覆写
class B extends A
{
public void print()
{
System.out.println("flag = " + flag + ",姓名:" + getName());
}
}
public class TestAbstract
{
public static void main(String[] args)
{
B b = new B();
b.print();
}
}
Final定义类不能有子类,但是抽象类定义之后必须有子类,所以抽象类不能与final共存。
final abstract class A
{
public static final String flag = "china" ;
private String name = "Tyrion";
public A()
{
System.out.println("抽象类的构造方法");
}
public String getName()
{
return this.name;
}
public abstract void print();
}
|
抽象类也是类,存在构造方法。
//本例是对抽象类的测试
abstract class A
{
public static final String flag = "china" ;
private String name = "Tyrion";
public A()
{
System.out.println("抽象类的构造方法");
}
public String getName()
{
return this.name;
}
public abstract void print();
}
//继承并覆写
class B extends A
{
public B()
{
super();
System.out.println("子类的构造方法");
}
public void print()
{
System.out.println("flag = " + flag + ",姓名:" + getName());
}
}
public class TestAbstract
{
public static void main(String[] args)
{
B b = new B();
b.print();
}
}
接口是一种特殊类,在接口中,包含全局常量和公共抽象方法。
格式:
Intterface 接口名称{
Public static fianl xxx
Public abstrac xxx
}
//本例是对接口的测试
interface A
{
public static final String NAME ="Tyrion";
public abstract void print();
}
public class TestAbstract
{
public static void main(String[] args)
{
}
}
由于接口中有抽象方法,所以要通过子类使用implements关键字来实现接口(可以实现多个接口),在子类中要全部覆写抽象方法。
格式:
Class A implements 接口1,接口2 {}
//本例是对接口的测试
interface A //定义接口A
{
public static final String NAME ="Tyrion";
public abstract void print();
}
interface B //定义接口B
{
public abstract void say();
}
class C implements A,B //子类C实现接口A,B
{
public void print()
{
System.out.println("hello");
}
public void say()
{
System.out.println("world");
}
}
public class TestAbstract
{
public static void main(String[] args)
{
C c =new C(); //实例化子类对象
c.print();
c.say();
}
}
一个子类(不是抽象类)既可以继承抽象类,也可以实现接口。
格式
Class 子类 extends 抽象类 implements 接口1....{}
//本例是对接口的测试
interface A //定义接口A
{
public static final String NAME ="Tyrion";
public abstract void printA();
}
interface B //定义接口B
{
public abstract void printB();
}
abstract class C //定义抽象类
{
public abstract void printC();
}
class D extends C implements A,B //子类D实现接口A,B并且继承抽象类C
{
public void printA() //覆写所有的抽象方法
{
System.out.println("接口A");
}
public void printB()
{
System.out.println("接口B");
}
public void printC()
{
System.out.println("接口C");
}
}
public class TestAbstract
{
public static void main(String[] args)
{
D d =new D(); //实例化子类对象
d.printA();
d.printB();
d.printC();
}
}
标签:面向对象 接口 抽象类 extends implements
原文地址:http://blog.csdn.net/baobeizhanshen/article/details/41926651