黑马程序员--java--继承和接口
2015-07-29 12:46
393 查看
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
通过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.一般类可以实例化,抽象类不能。
当一个类中的方法都是抽象的时候,这个类可用interface修饰,就是接口。
接口中的成员都是特定的修饰符:
成员变量:public static final
成员函数:public abstract
ps:
1.虽然抽象类中的局部变量和抽象方法的修饰符都可以不用写,但这样阅读性太差,所以最好写上。
2.类于类之间是继承关系,类与接口之间是实现关系。
3.接口不可以实例化,能有实现了接口并覆盖所以方法的子类实例化,否在子类还是抽象类。
4.接口和实现了接口的子类,都可以直接调用其中的静态变量。
1.2 接口的作用和特点
作用:
在Java中不能实现多继承,但可以有多实现。
特点:
1.一个类在继承一个类的同时还可以实现多个接口。
2.接口与接口之间是继承关系。
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.接口与接口之间是继承关系。
相关文章推荐
- 黑马程序员--java--两种设计模式
- 百度面试题 号码找到符合条件
- 2016校招内推 -- 阿里巴巴前端 -- 四面面试经历
- 程序员笔试面试--数据库知识
- 面试的时候的一些记录 - 不断更新
- 从武侠小说到程序员面试
- 阿里面试题---------关于html标签中物理标记和逻辑标记区别
- 程序员是如何一步步走向平庸的?
- 程序员面试宝典中的一个错误 char * b=(char *)&a
- 黑马程序员--IO流中的File类和Properties类、其他流
- 剑指offer面试题12——打印1到最大的n位数
- 程序员接私单需要注意的几大问题
- 从初级程序员到CEO的蜕变
- 115个Java面试题和答案——终极列表(下)
- 3015年度重大考古发现:中国古代村落“中关村”发现保存完好程序员墓
- 黑马程序员--IO流
- 面试题29_数组中出现次数超过一半的数字
- 程序员,不要轻易重写代码。
- 剑指Offer面试题9(java版)斐波那契数列
- 当程序员老去 还能做什么