---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
抽象类概括
定义: 多个类中的方法声明一样,但是方法体不一样,针对这种情况,我们只抽取方法声明,而只有方法声明没
有方法体的方法就是抽象方法。用abstract表示。如果一个类中有抽象方法,这个类必须定义为抽象类。
抽象类的特点:
1 一个类中如果有抽象方法,那么这个类必定为抽象类。但是一个类中也可以没有抽象方法,
这样做是为了不让别人直接创建对象。
2 一个类继承一个抽象类,要么全部实现父类的抽象方法,要么自己也是抽象类。
3 抽象类不能被实例化。
抽象类关键字abstract:它不能和那些关键字共存?
1 final:final修饰的方法不能被重写,而abstract修饰的方法必须被重写,冲突。
2 static:static修饰的方法可以直接被类名调用,而调用一个抽象方法没有意义。
3 private:private修饰的方法不能被重写,而abstract修饰的方法必须被重写,冲突。
抽象类的成员特点:
1 成员变量:可以是变量,也可以是常量。
2 构造方法:有构造方法,用于子类实例化时试用。
3 成员方法:可以是抽象方法,也可以是非抽象方法。
案例:抽象方法的简单演示。
abstract class Animal //抽象的动物类,有个吃的方法。
{
public abstract void eat();
}
abstract class Dog extends Animal
{
public abstract void eat();
}
class Cat extends Animal
{
public void eat()
{
System.out.println("haha");
}
}
class AbstractDemo
{
public static void main(String[] args)
{
Animal d = new Dog();
Animal c = new Cat();
d.eat();
c.eat();
}
}
接口概括
定义:接口是一种特殊的抽象类,当抽象类中的方法全部为抽象的时候。Java就提供了一种新的表现形式:接口。interface
抽象类和接口的区别:
1 成员的区别:
抽象类:成员变量:可以是变量,也可以是常量。
构造方法:有构造方法,用于实例化使用。
成员方法:可以是抽象的,也可以是非抽象的。
接口:
成员变量:只能是常I量,默认修饰符是Public static final.
成员方法:只能是抽象的,默认修饰符:public abstract。
建议:默认修饰符应该永远手动给出。
2 类和接口的关系区别:
类与类之间:继承关系,只能单继承,也可以多层(重)继承。
类与接口:实现关系,可以单实现,也可以多实现。而且类还可以在继承一个类的同时实现多个接口。
接口与接口:继承关系,可以单继承,也可以多继承。
3 体现的理念不同:
抽象类里面定义的都是一个继承体系中的共性内容,抽象类被继承是is a 的关系,xx是yy的一种。
而接口中定义的是一个体系的扩展内容,接口被实现:like a的关系,xx像yy的一种。
4 格式:
父接口:
interface Inter
{
}
子类:
class InterImpl implements Inter
{
}
5案例 接口间的继承
/*
当一个类中的方法都是抽象的时候,我们用接口来体现。
接口的特点:
A:不用使用abstract进行修饰的,它本身就可以代表是一个抽象的内容。
B:类可以实现一个接口,也可以实现多个接口。
类在继承一个类的同时,还可以实现多个接口。
C:接口继承接口,可以单继承,也可以多继承。
*/
interface Inter
{
public abstract void show();
}
interface Inter2
{
public abstract void method();
}
interface Inter3 extends Inter,Inter2 //接口的多继承
{
}
//class InterImpl extends Object implements Inter,Inter2
class InterImpl implements Inter,Inter2
{
public void show()
{
System.out.println("show");
}
public void method()
{
System.out.println("method");
}
}
class InterfaceDemo
{
public static void main(String[] args)
{
}
}
简单测试
interface Inter
{
int num = 10;
void method();
}
class InterImpl implements Inter
{
public void show()
{
System.out.println(num);
System.out.println(Inter.num);
}
public void method()
{
}
}
class InterfaceDemo2
{
public static void main(String[] args)
{
InterImpl ii = new InterImpl();
ii.show();
}
}
---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------
详细请查看:<a href="http://edu.csdn.net" target="blank">http://edu.csdn.net</a>