java中的抽象类,接口,内部类
2010-01-04 00:45
281 查看
抽象类(abstract class):
在class前加上abstract的类就是抽象类,如:public abstract class A{};
用abstract关键字来修饰一个类时,这个类叫做抽象类;用abstract来修饰一个方法时,该方法叫做抽象方法(抽象方法没有方法体)。
含有抽象方法的类必须被声明为抽象类,抽象类必须被继承,抽象方法必须被重写。
抽象类不能被实例化。
抽象方法只需声明,而不需实现。
类中可以没有抽象方法,但是抽象方法必须位于抽象类中!
子类继承抽象类必须重写抽象类里面的全部抽象方法。
使用抽象类的唯一途径是派生一个子类,如果这个子类实现了抽象类中所有的抽象方法,
那么这个子类就是一个普通的类。它可以用来创建对象。如果不实现父类中的所有抽象方法,
那么它也是一个抽象类,剩下的方法由它的子类实现。
抽象方法不能是静态方法,因为静态方法无需对象就能执行。
抽象类不能new抽象类。
接口(interface):
从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。
多个无关的类可以实现同一个接口
一个类可以实现多个无关的接口(接口变相地实现了多继承)
与继承关系类似,接口与实现类之间存在多态性
接口里面只能有抽象方法,但是这种抽象方法没有abstract关键字。
接口特性:
接口可以多重实现;
接口中声明的属性默认为public static final的;也只能是public static final的;
接口中只能定义抽象方法,而且这些方法默认为public的、也只能是public的;
接口可以继承其它的接口,并添加新的属性和抽象方法。
接口定义举例
public interface Runner {
int id = 1;//这里默认为常量
public void start();
public void run();
public void stop();
}
综合例子:
public interface Runner {
public void start();
public void run();
public void stop();
}
public class Person implements Runner{
public void start()
{
System.out.println("弯腰,蹬腿,咬牙,瞪眼,开跑");
}
public void run()
{
System.out.println("摆动手臂,维持直线方向");
}
public void stop()
{
System.out.println("减速直至停止,喝水");
}
public static void main(String args[])
{
Runner wanghui = new Person();
wanghui.start();
wanghui.run();
wanghui.stop();
System.out.println("/n");
}
}
输出结果:
弯腰,蹬腿,咬牙,瞪眼,开跑
摆动手臂,维持直线方向
减速直至停止,喝水
内部类:
总结:最最重要的一句话:抽象方法必须被重写,抽象类必须被继承。
子类继承抽象类必须重写抽象类里面的全部抽象方法。
接口是一种特殊的抽象类!
届口里面的抽象方法必须全部实现。
抽象类里面可以有非抽象方法,也就是实体方法。接口里面绝对不允许有实体方法。接口里面只能有抽象方法,但是这种抽象方法没有abstract关键字。
抽象类不可以new,同理,接口也不可以new
抽象类可以没有抽象方法
内部类(Inner class):
在Java中,允许一个类的定义位于另一个类的内部,前者称为内部类
内部类和外层封装它的类之间存在逻辑上的所属关系
Inner class一般用在定义它的类或语句块之内,在外部引用它时必须给出完整的名称。 Inner class的名字不能与包含它的类名相同;
Inner class可以使用包含它的类的静态和实例成员变量,也可以使用它所在方法的局部变量;
内部类特性:
Inner class可以声明为抽象类 ,因此可以被其它的内部类继承。也可以声明为final的。
和外层类不同,Inner class可以声明为private或protected;
Inner class 可以声明为static的,但此时就不能再使用外层封装类的非static的成员变量;
非static的内部类中的成员不能声明为static的,只有在顶层类或static的内部类中才可声明static成员;
在class前加上abstract的类就是抽象类,如:public abstract class A{};
用abstract关键字来修饰一个类时,这个类叫做抽象类;用abstract来修饰一个方法时,该方法叫做抽象方法(抽象方法没有方法体)。
含有抽象方法的类必须被声明为抽象类,抽象类必须被继承,抽象方法必须被重写。
抽象类不能被实例化。
抽象方法只需声明,而不需实现。
类中可以没有抽象方法,但是抽象方法必须位于抽象类中!
子类继承抽象类必须重写抽象类里面的全部抽象方法。
使用抽象类的唯一途径是派生一个子类,如果这个子类实现了抽象类中所有的抽象方法,
那么这个子类就是一个普通的类。它可以用来创建对象。如果不实现父类中的所有抽象方法,
那么它也是一个抽象类,剩下的方法由它的子类实现。
抽象方法不能是静态方法,因为静态方法无需对象就能执行。
抽象类不能new抽象类。
接口(interface):
从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。
多个无关的类可以实现同一个接口
一个类可以实现多个无关的接口(接口变相地实现了多继承)
与继承关系类似,接口与实现类之间存在多态性
接口里面只能有抽象方法,但是这种抽象方法没有abstract关键字。
接口特性:
接口可以多重实现;
接口中声明的属性默认为public static final的;也只能是public static final的;
接口中只能定义抽象方法,而且这些方法默认为public的、也只能是public的;
接口可以继承其它的接口,并添加新的属性和抽象方法。
接口定义举例
public interface Runner {
int id = 1;//这里默认为常量
public void start();
public void run();
public void stop();
}
综合例子:
public interface Runner {
public void start();
public void run();
public void stop();
}
public class Person implements Runner{
public void start()
{
System.out.println("弯腰,蹬腿,咬牙,瞪眼,开跑");
}
public void run()
{
System.out.println("摆动手臂,维持直线方向");
}
public void stop()
{
System.out.println("减速直至停止,喝水");
}
public static void main(String args[])
{
Runner wanghui = new Person();
wanghui.start();
wanghui.run();
wanghui.stop();
System.out.println("/n");
}
}
输出结果:
弯腰,蹬腿,咬牙,瞪眼,开跑
摆动手臂,维持直线方向
减速直至停止,喝水
内部类:
总结:最最重要的一句话:抽象方法必须被重写,抽象类必须被继承。
子类继承抽象类必须重写抽象类里面的全部抽象方法。
接口是一种特殊的抽象类!
届口里面的抽象方法必须全部实现。
抽象类里面可以有非抽象方法,也就是实体方法。接口里面绝对不允许有实体方法。接口里面只能有抽象方法,但是这种抽象方法没有abstract关键字。
抽象类不可以new,同理,接口也不可以new
抽象类可以没有抽象方法
内部类(Inner class):
在Java中,允许一个类的定义位于另一个类的内部,前者称为内部类
内部类和外层封装它的类之间存在逻辑上的所属关系
Inner class一般用在定义它的类或语句块之内,在外部引用它时必须给出完整的名称。 Inner class的名字不能与包含它的类名相同;
Inner class可以使用包含它的类的静态和实例成员变量,也可以使用它所在方法的局部变量;
内部类特性:
Inner class可以声明为抽象类 ,因此可以被其它的内部类继承。也可以声明为final的。
和外层类不同,Inner class可以声明为private或protected;
Inner class 可以声明为static的,但此时就不能再使用外层封装类的非static的成员变量;
非static的内部类中的成员不能声明为static的,只有在顶层类或static的内部类中才可声明static成员;
相关文章推荐
- 黑马程序员--Java基础--继承、抽象类、接口、内部类、异常、包
- java中抽象类,接口,多态,匿名内部类总结串讲
- 黑马程序员_Java基础_抽象类,模板设计模式,接口,内部类,多态
- Java学习_抽象类、接口、内部类_2014_1_16
- 黑马程序员-Java的面向对象(抽象类、接口、内部类和继承、组合、多态)
- 黑马程序员 Java面向对象(继承,抽象类,接口,多态,内部类)
- 黑马程序员-Java学习笔记之抽象类,接口,多态和内部类
- Java基础——关于抽象类,接口和内部类(inner class)的相关知识
- Java之接口,抽象类,内部类
- Java基础之面向对象(抽象类、接口、内部类)
- Java学习_0712接口、抽象类内部类,继承
- Java基础07:重写;重载;内部类;抽象类;接口
- Java__内部类,抽象类,继承,接口,异常的处理...等
- Java__内部类,抽象类,继承,接口,异常的处理...等
- 黑马程序员-----java 抽象类、接口、内部类
- 黑马程序员——Java基础---面向对象(封装、继承、单例、抽象类、接口、内部类)
- 【JAVA基础】④关于重载,重写,抽象类,接口,内部类和单例模式
- java基础知识---多态、抽象类、接口、内部类
- java(单例模式、抽象类、接口、内部类)
- Java基础笔记-继承、抽象类、接口、多态、内部类、异常