黑马程序员----------基础之类、接口
2014-12-14 16:32
176 查看
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
一、类的初始化顺序
一个对象在初始化时,会用到静态代码块、代码块、构造函数完成初始化。
他们的初始化顺序为父类静态代码块->子类静态代码块->父类代码块->父类构造函数->子类代码块->子类构造函数,其中静态代码块只会运行一次,后面再new新的对象是不会执行的,并且静态代码块只能调用修改类里的静态成员变量。静态初始化完成后,会对象所在类的所有类成员变量、常量进行初始化。所有类成员初始化完成之后才调用本类的构造方法创建对象。
一个类可以有多个代码块,他们按前后顺序执行。一个类内也可以有多个构造方法,不写磨人调用父类的构造方法,一个构造方法内,还可以调用其他的构造方法,但是必须写在该构造方法的第一行。
二、抽象类
抽象类是指不能直接调用方法的类。抽象类相当于不同对象的共性抽取。如果一个类中有abstract方法,则这个类肯定是抽象类。。抽象类的子类如果没有实现父类的抽象方法,则也是抽象类。
抽象类的几个注意的地方
1.抽象类里的抽象方法不能前缀为private和final。
2.抽象类可以继承实体类,但是该实体类不该有final构造方法。
三、接口
接口可以看成是事物的共性方法的抽取,接口用interface修饰,使用implements来实现。
接口的几个注意的地方
1.接口内所有的变量都是public static final静态常量,且需要赋值。一般用全字母大写来表示。
2.jdk8.0之前接口内的方法都是公开抽象方法,java8.0后接口内可以写default方法。
3.接口和接口之间可以多继承。
4.接口不可以直接创建一个对象。
5.一个类可以实现多个接口。
四、内部类
内部类是定义在类里的类,内部类仍然是一个独立的类,在编译之后内部类会被编译成独立的.class文件,但是前面冠以外部类的类名和$符号。内部类不能用普通的方式访问。内部类是外部类的一个成员,因此内部类可以自由地访问外部类的成员变量,无论是否是private的。内部类声明成静态的,就不能随便的访问外部类的成员变量,仍然是只能访问外部类的静态成员变量。
内部类可以分成三种:
1.成员内部类
2.局部内部类
3.匿名内部类 匿名内部类不该有构造方法,不应该定义任何静态的方法变量。匿名内部类一般只会写1-2个方法。匿名内部类都跟在new之后,用其隐含实现一个接口或实现一个类。
一、类的初始化顺序
一个对象在初始化时,会用到静态代码块、代码块、构造函数完成初始化。
class StartDemo{ public static void main (String []args){ A a = new A(); System.out.println("========================"); A a2 = new A(); System.out.println("========================"); System.out.println(B.x); } } class A extends B { static int x = 1 ; final int y = 2 ; int z = 3 ; A(){ System.out.println("我是构造函数. z="+z); } { System.out.println("我是代码块.y="+y); this.z = 1; } static{ System.out.println("我是静态代码块.x="+x); } } abstract class B { static int x = 1 ; final int y = 2 ; int z = 3 ; B(){ System.out.println("我是构造函数b.z="+z); int z = 4; } { System.out.println("我是代码块b.y="+y); this.z = 1; } static{ System.out.println("我是静态代码块b.x="+x); } } /**输出结果 我是静态代码块b.x=1 我是静态代码块.x=1 我是代码块b.y=2 我是构造函数b.z=1 我是代码块.y=2 我是构造函数. z=1 ======================= 我是代码块b.y=2 我是构造函数b.z=1 我是代码块.y=2 我是构造函数. z=1 ======================= */
他们的初始化顺序为父类静态代码块->子类静态代码块->父类代码块->父类构造函数->子类代码块->子类构造函数,其中静态代码块只会运行一次,后面再new新的对象是不会执行的,并且静态代码块只能调用修改类里的静态成员变量。静态初始化完成后,会对象所在类的所有类成员变量、常量进行初始化。所有类成员初始化完成之后才调用本类的构造方法创建对象。
一个类可以有多个代码块,他们按前后顺序执行。一个类内也可以有多个构造方法,不写磨人调用父类的构造方法,一个构造方法内,还可以调用其他的构造方法,但是必须写在该构造方法的第一行。
二、抽象类
抽象类是指不能直接调用方法的类。抽象类相当于不同对象的共性抽取。如果一个类中有abstract方法,则这个类肯定是抽象类。。抽象类的子类如果没有实现父类的抽象方法,则也是抽象类。
抽象类的几个注意的地方
1.抽象类里的抽象方法不能前缀为private和final。
2.抽象类可以继承实体类,但是该实体类不该有final构造方法。
三、接口
接口可以看成是事物的共性方法的抽取,接口用interface修饰,使用implements来实现。
接口的几个注意的地方
1.接口内所有的变量都是public static final静态常量,且需要赋值。一般用全字母大写来表示。
2.jdk8.0之前接口内的方法都是公开抽象方法,java8.0后接口内可以写default方法。
3.接口和接口之间可以多继承。
4.接口不可以直接创建一个对象。
5.一个类可以实现多个接口。
四、内部类
内部类是定义在类里的类,内部类仍然是一个独立的类,在编译之后内部类会被编译成独立的.class文件,但是前面冠以外部类的类名和$符号。内部类不能用普通的方式访问。内部类是外部类的一个成员,因此内部类可以自由地访问外部类的成员变量,无论是否是private的。内部类声明成静态的,就不能随便的访问外部类的成员变量,仍然是只能访问外部类的静态成员变量。
内部类可以分成三种:
1.成员内部类
2.局部内部类
3.匿名内部类 匿名内部类不该有构造方法,不应该定义任何静态的方法变量。匿名内部类一般只会写1-2个方法。匿名内部类都跟在new之后,用其隐含实现一个接口或实现一个类。
相关文章推荐
- 黑马程序员_Java基础_面向对象(继承、子父类变量和函数以及构造函数特点、final关键字、抽象类、模版方法模式、接口)
- 黑马程序员_JavaSE基础09 之 继承extends 实现implements 抽象类 接口
- 黑马程序员--Java基础加强--17.利用反射操作泛型VI【泛型类型变量的语义】【GenericDeclaration接口】【泛型接口TypeVariable】【通过Class反射解析泛型类】
- 黑马程序员:C#基础篇(四)抽象类、接口、继承与多态
- 黑马程序员--Java基础学习笔记之抽象类和接口、内存结构分析、Java APIs
- 黑马程序员-java基础 继承、抽象、接口
- 黑马程序员-Java基础,Java集合Collection和Iterator接口
- 黑马程序员--Java基础加强--12.利用反射操作泛型I【与反射+泛型相关的接口类型综述】【Type】【ParameterizedType】【个人总结】
- 黑马程序员 Java基础接口、内部类及异常
- 黑马程序员_java基础-图形用户接口GUI(Graphical User Interface)
- 黑马程序员_基础复习06_接口
- 黑马程序员 07 Java基础教学 - 07 - 面向对象(3) 之 继承、抽象、接口
- 黑马程序员-JAVA基础-Java 集合之Map 接口
- 黑马程序员--Java基础加强--15.利用反射操作泛型IV【通过反射Method解析泛型方法思路】【通过Method对四种Type子接口类型进行解剖】【使用递归对任意复合泛型类型进行彻底解剖】【个人
- 黑马程序员:Java基础总结----继承&抽象&接口
- 黑马程序员_Java基础_GUI(图形用户接口)
- 黑马程序员-JAVA基础-Java 集合之Set 接口
- 黑马程序员_JAVA基础_抽象类与接口的关系
- 黑马程序员-Java基础加强之类加载器
- 黑马程序员之Java基础加强之类加载器