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

黑马程序员--java--继承和接口

2015-07-29 12:46 393 查看
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

1.继承

1.1 继承的描述
 通过extends关键字让类于类之间产生继承关系。

 把多个类中的共同属性和行为,向上抽取,形成新的类,那么多个类无需再重复定义这些属性和行为,字需要继承这个类即可,多个类成为之类,这个单独的类成为父类或者是超类。

特点:

1.子类可直接访问父类中的非私有的属性和行为。

2.子类无法继承父类中私有类容。

3.父类是众多子类不断向上抽取共同部分而形成的。

4.java只支持单继承,不支持多继承。一个类只能有一个父类。

5.不要仅为了获取其他类中的某个方法而去继承,类于类之间要有所属关系。

优点:

1.继承提高了代码的复用性。

2.继承的出现让类于类之间产生了关系,为多态提供了前提。
1.2 关键字:this和super
成员变量:

 this代表本类对象的引用,super代表父类内存空间的标识。

成员函数:

 当子父类出现相同成员函数名,会出现覆盖现象,运行子类的函数,若子类覆盖方法中,使用被覆盖的方法额通过super().函数名获取。
1.3 函数的两个特性
1.重载:同一个类中,方法名相同,传入参数类型不同。

2.覆盖:子父类中,返回值类型、函数名、传入参数类型都相同,子类中访问权限大于父类。

什么时候使用覆盖操作?

 当子类需要父类的功能,而功能主体有自己的内容时,可以复写父类的方法,这样,基沿袭了父类的功能,又有子类特有内容

注意:

1.父类中的私有方法不能被覆盖。

2.父类中的静态方法不能覆盖

3.覆盖时子类方法权限一定要大于等于父类的权限。
1.4 构造函数在继承中的特点
在子类构造函数执行时,发现父类构造函数也运行了。

原因:在子类构造函数中,第一行有默认的隐式语句:super();.

注意:如果在构造函数中使用了父类的构造函数,那么默认的父类构造函数将不会再被调用.
1.5 子类的实例化
一个对象的实例化过程:

 如 Person p = new Person();

1.jvm会读取指定路径下Person.class文件,并加载到内存中,如果有父类会先加载父类。

2.执行static代码块,给Person.class文件进行初始化

3.在堆内存中分配空间,分配地址值。

4.在对象空间中,对对象的属性进行默认初始化(0和null)。

5.调用对应的构造函数进行初始化

6.在构造函数中第一行,会滴阿勇父类中构造函数进行初始化。

7.父类初始化后在,在对子类的属性进行显示初始化

8.在进行子类构造函数的特定初始化

9.初始化完毕后,将将地址值赋值给变量。

ps:

1.当父类中没有空参数的构造函数时,子类的构造函数必须通过this和super语句指定要访问的构造函数。

2.子类构造函数中如果使用了this调用本类构造函数,那么默认的super(),就没有了,因为super和this都只能定义在第一行。但要保证子类中有其他的构造函数访问了父类的构造函数。

3.super语句必须在子类构造函数的第一行,因为父类的初始化要先完成。
1.6 关键字 final
特点:

1.可以修饰类、函数、变量。

2.被修饰的类不可以被继承,避免了被复写。

3.被修饰的变量是一个常亮,自能被赋值一次,既可以是成员变量也可以是局部变量。(常量的每个字符都大写如 PI=3.14)

4.被修饰的方法不能被覆盖。

5.内部类定义在局部时只能访问该局部被final修饰的部分。
1.7 抽象类:abstract class Student
抽象的定义:抽象就是从多个事物中将共性的、本质的部分抽取出来。

抽象方法:没有方法体的方法 abstract void show();

特点:

1.抽象方法一定在抽象类中,抽象类中可有非抽象方法。

2.抽象方法与抽象类必须被abstract修饰。

3.抽象类不能建立对象,必须由子类复写其所有的抽象方法后,建立子类对象才可调用其方法。

4.如果子类中服用了部分的抽象方法,那么子类也是抽象的。

注意问题:

1.abstract不能与private、static、final共存。

2.抽象类中可以没有抽象方法。

抽象类和一般类的区别

1.一般类有足够的信息描述事物,抽象类描述事物的信息不足。

2.一般类中不能定义抽象方法,抽象类中可有定义抽象方法,也可定义非抽象方法。

3.一般类可以实例化,抽象类不能。

2.接口

2.1 接口的描述
 当一个类中的方法都是抽象的时候,这个类可用interface修饰,就是接口。

接口中的成员都是特定的修饰符:

成员变量:public static final

成员函数:public abstract 

ps:

1.虽然抽象类中的局部变量和抽象方法的修饰符都可以不用写,但这样阅读性太差,所以最好写上。

2.类于类之间是继承关系,类与接口之间是实现关系。

3.接口不可以实例化,能有实现了接口并覆盖所以方法的子类实例化,否在子类还是抽象类。

4.接口和实现了接口的子类,都可以直接调用其中的静态变量。
1.2 接口的作用和特点
作用:

在Java中不能实现多继承,但可以有多实现。

特点:

1.一个类在继承一个类的同时还可以实现多个接口。

2.接口与接口之间是继承关系。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: