java基础2:抽象类、接口与多态
2015-04-07 23:13
211 查看
关于Java基础的文章,我觉得写得还可以,以前发在了我其它的博客了,肯定是原创,现在再分享给大家出来。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
抽象类、接口、多态都是面向对象中很基础的东西,我相信看到能本篇博客的人本不会再纠结它的基本定义了,本篇文章将尽量的更加深层次的挖掘其内涵,希望能对大家有帮助。
1、形式
2、特点
a、抽象类不可以被实例化
b、抽象类必须有其子类覆盖了所有抽象方法后,该子类才可以实例化,否则,该子类还是抽象类。
c、抽象方法必须定义在抽象类中,该类必须也被abstract修饰。
3、那么问题来了
a、抽象类有构造函数吗?
有,用于给子类实例化。
b、抽象类可以不定义抽象方法吗?
事实上是可以的,但是很少见。
c、抽象类和一般类的异同点。
相同点:
抽象类和一般类都是用来描述事物的,都在内部定了成员。
不同点:
1,一般类有足够的信息描述事物。抽象类描述事物的信息有可能不足。
2,一般类中不能定义抽象方法,只能定非抽象方法。抽象类中可定义抽象方法,同时也可以定义非抽象方法。
3,一般类可以被实例化。抽象类不可以被实例化。
从某种意义上说,接口是一种特殊形式的抽象类,在java语言中抽象类表示的是一种继承关系,一个类只能继承继承一个抽象类,而一个类却可以实现多个接口。
我们都知道接口的定义方式是
其实对于接口当中常见的成员:而且这些成员都有固定的修饰符。
a、全局常量: public static final
b、抽象方法:public abstract
1、由此得出结论,接口中的成员都是公共的权限。即全写是
2、接口特点
a、接口是对外暴露的规则,是程序功能的扩展。
b、接口降低了耦合性。
c、一个类可以实现多个接口
3、接口与抽象类异同点
相同点:
都是不断向上抽取而来的。
不同点:
1,抽象类需要被继承,而且只能单继承。接口需要被实现,而且可以多实现。
2,抽象类中可以定义抽象方法和非抽象方法,子类继承后,可以直接使用非抽象方法。接口中只能定义抽象方法,必须由子类去实现。
一个对象有不同的形态,这就是多态。
比如 动物 ani = new 狗();
这就是多态在代码中的体现:父类引用指向子类对象。
1、多态好处与弊端
多态的好处:提高了代码的扩展性,前期定义的代码可以使用后期的内容。
多态的弊端:前期定义的内容不能使用(调用)后期子类的特有内容。
2、向下转型
3、内部类
内部类是我们以前建的比较少的,其实就是类里面有类。
a、内部类如何引用外部类?
内部类持有了外部类的引用。 外部类名.this。
3、内部类可以存放在局部位置上,且在局部位置上只能访问局部中被final修饰的局部变量。
4、匿名内部类
匿名内部类是内部类的一种简写形式,其实就是一个匿名子对象。
抽象类、接口和多态虽然简单,但是常用,尤其像是内部类、匿名内部类这些我们以前接触较少,更应该重点掌握。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
抽象类、接口、多态都是面向对象中很基础的东西,我相信看到能本篇博客的人本不会再纠结它的基本定义了,本篇文章将尽量的更加深层次的挖掘其内涵,希望能对大家有帮助。
一、抽象类
1、形式abstract class Ceshi { abstract void show(); } class DemoA extends Ceshi { void show() { System.out.print("Hello world"); } }
2、特点
a、抽象类不可以被实例化
b、抽象类必须有其子类覆盖了所有抽象方法后,该子类才可以实例化,否则,该子类还是抽象类。
c、抽象方法必须定义在抽象类中,该类必须也被abstract修饰。
3、那么问题来了
a、抽象类有构造函数吗?
有,用于给子类实例化。
b、抽象类可以不定义抽象方法吗?
事实上是可以的,但是很少见。
c、抽象类和一般类的异同点。
相同点:
抽象类和一般类都是用来描述事物的,都在内部定了成员。
不同点:
1,一般类有足够的信息描述事物。抽象类描述事物的信息有可能不足。
2,一般类中不能定义抽象方法,只能定非抽象方法。抽象类中可定义抽象方法,同时也可以定义非抽象方法。
3,一般类可以被实例化。抽象类不可以被实例化。
二、接口
从某种意义上说,接口是一种特殊形式的抽象类,在java语言中抽象类表示的是一种继承关系,一个类只能继承继承一个抽象类,而一个类却可以实现多个接口。我们都知道接口的定义方式是
interface Demo { void show(); }
其实对于接口当中常见的成员:而且这些成员都有固定的修饰符。
a、全局常量: public static final
b、抽象方法:public abstract
1、由此得出结论,接口中的成员都是公共的权限。即全写是
interface Demo { public static final int num = 4; public abstract void showa(); }
2、接口特点
a、接口是对外暴露的规则,是程序功能的扩展。
b、接口降低了耦合性。
c、一个类可以实现多个接口
abstract class Test2 extends Q implements A,Z { }
3、接口与抽象类异同点
相同点:
都是不断向上抽取而来的。
不同点:
1,抽象类需要被继承,而且只能单继承。接口需要被实现,而且可以多实现。
2,抽象类中可以定义抽象方法和非抽象方法,子类继承后,可以直接使用非抽象方法。接口中只能定义抽象方法,必须由子类去实现。
三、多态
一个对象有不同的形态,这就是多态。比如 动物 ani = new 狗();
这就是多态在代码中的体现:父类引用指向子类对象。
1、多态好处与弊端
多态的好处:提高了代码的扩展性,前期定义的代码可以使用后期的内容。
多态的弊端:前期定义的内容不能使用(调用)后期子类的特有内容。
2、向下转型
动物 ani = new Cat(); Cat c = (Cat)ani;
3、内部类
内部类是我们以前建的比较少的,其实就是类里面有类。
class Outer//外部类 { class Inner// 内部类。 { } }
a、内部类如何引用外部类?
内部类持有了外部类的引用。 外部类名.this。
class Outer { int num = 3; class Inner { int num = 4; void show() { int num = 5; System.out.println(Outer.this.num); } } void method() { new Inner().show(); } }
3、内部类可以存放在局部位置上,且在局部位置上只能访问局部中被final修饰的局部变量。
class Outer { void method() { final int x = 9; class Inner { public String toString() { } } } }
4、匿名内部类
匿名内部类是内部类的一种简写形式,其实就是一个匿名子对象。
public void method() { new Demo()//匿名内部类。 { void show() { System.out.println("show:"+num); } }.show(); }
四、最后
抽象类、接口和多态虽然简单,但是常用,尤其像是内部类、匿名内部类这些我们以前接触较少,更应该重点掌握。相关文章推荐
- 黑马程序员——java基础——继承、抽象类、接口、多态
- 黑马程序员_Java基础_抽象类,模板设计模式,接口,内部类,多态
- 黑马程序员 Java基础——多态、抽象类及接口
- Java基础笔记-继承、抽象类、接口、多态、内部类、异常
- Java基础学习第九天——多态,抽象类,接口
- java基础知识点之多态,接口,抽象类
- Java基础-09总结final,多态,抽象类,接口
- 黑马程序员——Java基础---面向对象之多态抽象类接口
- Java基础进阶_day03_(抽象类,接口,多态)
- Java基础---多态、抽象类、接口
- 黑马程序员 Java基础 面向对象:继承、final关键字、抽象类、模版方法模式、接口、多态、Object类
- 黑马程序员---java基础---多态,抽象类,接口
- java基础(2)-基础类型和语法(static、内部类、final、抽象类、接口、封装)(并将这些基础知识与java的三大特征关联(继承、多态、封装))
- JAVA基础必备(九)——继承,封装,多态,抽象类,接口
- Java基础——面向对象——继承、抽象类、接口、多态、包、内部类、异常等
- 黑马程序员——java基础_继承、抽象类、接口、多态
- Java基础学习中,关于面向对象中多态、抽象类、接口的总结
- java基础10:抽象类、接口与多态
- 黑马程序员——【Java基础】——面向对象(一)概述、类与对象、继承、抽象类、接口、多态、内部类
- 多态、抽象类、接口、区别(java基础知识九)