您的位置:首页 > 职场人生

黑马程序员_JavaSE基础09 之 继承extends 实现implements 抽象类 接口

2012-09-05 09:18 465 查看
----------------------      android培训、java培训、期待与您交流!   ---------------------

JavaSE_09  笔记 

Java语言基础之  继承extends 实现implements  抽象类 接口

 

1、 子父类构造函数的特点:

 ① 子类构造函数第一行有一个默认的调用父类的构造函数。super();

 ② 父类的构造函数 既没有被复写,也没有被继承。

 ③ 不管子类是在有参还是无参构造函数中,默认调用的都是父类无参构造函数,super() ,除非你明确指明要调用父类中哪个构造函数。

 ④ super 和 this 都只能定义在函数的第一行,所以只能有一个,但可以保证的是,子类中肯定会有其他的构造函数访问父类的构造函数。

 ⑤ 构造函数的访问权限同class 的访问权限相同。

 

2、

class Fu

{

Fu()

{

show(); // ③父类的构造函数进栈,调用的是子类重写后的show方法。

}

show(){}

}

 

class Zi

{

int num=8;  //①new Zi(),子类属性先初始化。

Zi()// ②然后子类构造函数进栈,

{

super(); //④父类构造函数出栈。

System.out.println("zi run "+num); //此句前num是默认初始化0,此句后是显示初始化8.

}

show(){}

}  

总结:子父类都用到了子类的常量的时候,super()之前会使用子类默认的初始化值,super()之后则使用显示的初始化值。

 

3、一个对象的实例化过程: Zi z=new Zi();

①JVM会先读取指定路径下的class文件,并加载进内存,并先会加载zi的fu类。

②new后,在堆内存中开辟空间,分配地址。

③在对象的堆空间中,对对象中的属性进行默认初始化。

④调用对应的构造函数进行初始化。

⑤在zi() 构造函数中,第一行会先调用父类中构造函数进行初始化。

⑥父类初始化完毕后,再对子类的属性进行显示初始化。

⑦在进行子类构造函数的特定初始化。

⑧初始化完毕后,将地址值赋值给引用变量。


4、 面向对象之final 

①fianl修饰的类不可以被继承。

②final修饰的方法不可以被覆盖。

③final修饰的变量是一个常量,只能赋值一次。

④规范:常量所有字母都大写,多个单词,中间用_连接。

Public static final double My_p= 3.14; // 全局常量

 

5、面向对象之抽象类特点

①方法只有声明没有实现时,该方法就是抽象方法,需要被abstract修饰。抽象方法必须定义在抽象类中,
4000
并且该类必须被abstract修饰。

②抽象类不能实例化。

③抽象类必须有其子类覆盖了所有的抽象方法后,该子类才可以实例化,被New,否则这个子类还是抽象类。

④abstract不能和private,static,final 共存。

 

6、面向对象之接口 interface

Interface:当一个抽象类中的方法都是抽象的时候,可以将抽象类用interface表示。

①接口中常见的成员,默认可以不写,

全局常量:public static final ; 

抽象方法:public abstract ;

②接口中的常用都是公共权限

 

7、继承extends和实现implements的区别:

 ①对于extends继承,子类只需要从父类中拿自己需要的东西。

 ②对于implements实现,对于父类的东西,子类必须全部实现。

 ③类与类之间是继承关系,类与接口是实现关系。

 

8、接口的实现implements (Zi like Fu)

① 接口改善了Java不能有多继承的缺陷,可以用来多实现。

② 接口对外暴露规则,是程序的功能扩展,降低耦合性。

③ 类和接口间是实现关系,接口间是继承关系。

 

2012/9/04     By  Mary_k
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐