黑马程序员——Java基础---面向对象之继承

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流!                                                                                        面向对象之继承

 一:继承(extends)

(1)继承的体系结构:就是对要描述的事物进行不断的向上抽取,就出现了体系结构。

要了解这个体系结构中最共性的内容,就看最顶层的类。

要使用这个体系的功能,就用最底层的类创建对象。

(2)继承的好处:

A:继承的出现,提高了代码的复用性。

B:继承的出现,让类与类之间产生了关系,extends来表示,这个关系的出现,为后面我们讲面向对象的第三个特点多态打下了基础。

(3)特点

A:java只支持单继承(其实确切的说是java对多继承进行了优化,避免了安全问题)。

B:java支持多重(层)继承。

(4)注意:

A:子类可以直接访问父类中的非私有的属性和行为。

B:不要仅为了获取其他类中部分功能而去继承。

C:类与类之间要有所属( " is a " )关系,xx1是xx2的一种。

如何判断A和B是否有继承关系?

A如果继承B,那么就可以说A是B的一种。

二:继承后子父类之间成员的关系

(1)成员变量

 1 class Fu{
 2
 3 int num = 5;
 4
 5 }
 6
 7
 8
 9 class Zi extends Fu{
10
11 int num = 20;
12
13
14
15
16
17 public void show() {
18
19 int num = 30;
20
21 System.out.println("num:"+num);
22
23 //当局部变量和成员变量重名的时候用this来区分
24
25 System.out.println("this num:"+this.num);
26
27 //当子类和父类出现了同名变量,用super来区分
28
29 System.out.println("father num:"+super.num);
30
31 }
32
33 }

总结:在一个类中如果方法中的局部变量和方法外的成员变量重名,那么如果在方法内输出这变量,就是方法自己的变量里的值,想要区分要用this,加上this.就是输出成员变量的值

在子父类中如果出现成员变量重名的时候,在子类输出会输出自己的变量里的值,想要区分要用super,加上super.就是输出父类里变量的值

this和super的区分:

this代表本类对象的引用

super本类对象父类的引用。

this可以用于区分局部变量和成员变量同名的情况。

super可以用于区分子类和父类成员变量同名的情况。

一般,子类中不会出现和父类同名的成员变量。面试可能问到。

(2)成员方法

 1 class Fu {
 2
 3 public void show() {
 4
 5 System.out.println("fu show");
 6
 7 }
 8
 9 public void method() {}
10
11 }
12
13
14
15 class Zi extends Fu{
16
17
18
19 public void show(){
20
21
22
23 System.out.println("zi show");
24
25 }
26
27 }

子类中存在和父类成员方法同名的这种现象,叫做重写,复写,覆盖。

重写(override)和重载(overload)的区别:

重载的特点:

1, 在同一类中。

2, 方法名相同,参数列表不同。

重写的特点:

1,要有继承关系。在子父类中

2,方法的声明相同。(方法名和参数列表都相同)

3,覆盖时,子类方法权限一定要大于等于父类方法权限

父类的权限不能是私有的

静态只能覆盖静态。

(3)构造方法

 1 class Fu{
 2
 3
 4
 5 Fu(){}
 6
 7
 8
 9 Fu(int age){
10
11 System.out.println("father age:"+age);
12
13 }
14
15 }
16
17
18
19 class Zi extends Fu{
20
21 Zi(){
22
23 this(40);
24
25 System.out.println("son");
26
27 }
28
29
30
31 Zi(int age){
32
33 super();
34
35 System.out.println("son age:"+age);
36
37 }
38
39 }
40
41
42
43 Zi z = new Zi();
44
45
46
47 Zi z = new Zi(30);

总结:子类中所有的构造方法默认都会访问父类中空参数的构造方法。

因为每一个构造方法的第一行都有一条默认的语句super();

当父类中没有空参数的构造方法时,子类的构造函数必须通过this

或者super语句指定要访问的构造方法。或者手动提供无参构造方法。

this(...):调用本类中的构造方法

super(...):调用父类中的构造方法

构造方法用于创建对象,并进行初始化.建议如果你写了有参的构造函数,也要把空参的构造函数再手动加上

否则你定义了有参的构造函数,空参的系统就不会再给了

你这样创建对象的时候就会报错Person p = new Person();//这句话是会去找空参的构造函数

 1  class Person{
 2
 3 Person(){}
 4
 5
 6
 7 Person(int age){
 8
 9 this.age = age;
10
11 }
12
13
14
15 Person(int age,String name){
16
17 this(age);
18
19 //this.age = age;
20
21 this.name = name;
22
23 }
24
25  }
26
27
28
29       //Person p =new Person();  //系统默认给出无参构造
30
31
32
33       //当你手动给出构造方法后,系统就不会再给出默认的空的构造方法。
34
35
36
37
38
39       手动无参数,如果你想给属性赋值或者做一些初始化,无参你别删不就行了吗。
40
41 class Demo{
42
43 private String name;
44
45 Demo(){}
46
47
48
49 public void setName(String name){
50
51 this.name = name;
52
53 }
54
55
56
57 public String getName(){
58
59 return name;
60
61 }
62
63 }
64
65  

-----------android培训、java培训、java学习型技术博客、期待与您交流!------------

时间: 2024-10-06 06:48:29

黑马程序员——Java基础---面向对象之继承的相关文章

黑马程序员-Java基础-面向对象—继承、构造函数、重写、final、抽象类、接口

第一讲  继承 1.  继承的作用 1) 提高代码复用性: 2) 让类与类之间产生了关系: 2.  java继承特点 1) java只支持单继承,不支持多继承 因为多继承容易带来安全隐患:当多个父类中定义了相同功能,但功能内容不同时,子类对象不确定要运行哪一个. 2) java支持多层继承:可以形成一个继承体系 利用一个继承体系的方法:阅读体系父类,了解共性功能(该体系的基本功能),具体要调用这些基本功能时,需要创建最子类的对象,为什是最子类: 一是:父类有可能不能创建兑现(如,静态类或接口):

黑马程序员——Java基础---面向对象(下)

一.概述 面向对象除了封装.继承和多态三大特征之外,还有其他的特性,例如abstract抽象.interface接口等,抽象类主要作为多个类的模板,而接口则定义了多类应该遵守的规范,final关键字让java实现不可变类,让系统更加安全. 二.正文 1.构造器和初始化块 1.1 构造器 构造器是一种特殊方法,这个特殊方法用于创建实例时执行初始化,是创建对象的重要途径,如果程序员没有为JAVA类提供任何构造器,则系统会为这个类提供一个无参数的构造器,这个构造器的执行体为空,不做任何事情.无论如何,

黑马程序员——Java基础---面向对象

-----------android培训.java培训.java学习型技术博客.期待与您交流!------------ 2015-05-06 一.理解面向对象 面向对象的特点: 1. 是一种符合人们思考习惯的思想 2. 可以将复杂的事情简单化 3.将程序员从执行者转换成了指挥者 完成需求时: a)先要去找具有所需的功能的对象来用. b) 如果该对象不存在,那么创建一个具有所需功能的对象. c) 这样简化开发并提高复用. 在Java的开发过程,其实就是不断的找对象,建立对象,维护对象.设计的过程,

黑马程序员--java基础--面向对象

------- android培训.java培训.期待与您交流! ---------- 面向对象的概述: 举例装大象到冰箱.而谈面向对象,就一定要说说面向过程. 面向过程:打开冰箱,装入大象,关上冰箱.这三步就是面向过程的思考方式,这种思想强调的是过程,也可以叫做动作.在C中是这种方式 面向对象:冰箱打开,冰箱存储,冰箱关闭.这就是面向对象的思考方式,这种方式强调是对象,也可以说是实例.在java,C++,C#中使用. 面向对象的特点 1.面向对象的思想符合人们惯有的思考方式. 2.面向对象的出

黑马程序员——java基础--面向对象--继承

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 继承: 1.当一个类中包含了另一个类的所有变量个方法时,但另一个类中不包含另一个类的所有变量和方法时,表示范围比较小的就可以作为另一个的父类. 集合表示:A属于B,B不属于A,A就可以作为B的父类,B继承A 2.当只是为了获取其他类的功能的时候,不能为了简化代码而继承. 3.必须是类与类之间的所属关系才可以继承,所属关系看前面集合 继承的特点: 1.不支持多继承,只支持单继承: 多继承的话容易

黑马程序员——Java基础——面向对象——继承、抽象类、接口、多态、包、内部类、异常等

第一讲 继承 1.继承: 当多个类拥有相同的功能时,那么这些类不需要每个都写这些相同的功能,只需要把相同功能抽到 一个单独的类中,继承这个类就能获得这些相同的功能: (1)继承的体系结构:就是对要描述的事物进行不断的向上抽取,就出现了体系结构. 要了解这个体系结构中最共性的内容,就看最顶层的类. 要使用这个体系的功能,就用最底层的类创建对象 (2)好处: A.提高代码复用性: B.继承的出现,让类与类之间产生关系,为多态的前提 (3)特点: A.只能单继承(准确的说是java对多继承进行优化,避

黑马程序员——Java基础---面向对象之理解

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 面向对象之理解 一:理解面向对象           1,什么是对象 对象就是实际生活中的事物,可以说一切事物都是对象.   如:桌子,椅子,电脑,电视机等. 对象的3个主要特征: a)对象行为:这个对象能做什么,既可以让这个对象完成什么

黑马程序员----Java基础面向对象 父为 子类 以及特点

首先讲  面向过程和面向对象思想! 面向过程的思想:由过程.步骤.函数组成,以过程为核心:面向对象的思想:以对象为中心,先开发类,得到对象,通过对象之间相互通信实现功能.面向过程是先有算法,后有数据结构.面向对象是先有数据结构,然后再有算法.在用面向对象思想开发的过程中,可以复用对象就进行复用,如无法进行复用则开发新的对象.开发过程是用对个简单的对象的多个简单的方法,来实现复杂的功能 .从语法上来看,一个类是一个新的数据类型.在面向对象编程中,除了简单数据类型,就是对象类型. 定义类的格式:cl

黑马程序员----java基础----面向对象思想和类的概述

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 面向对象(掌握) (1)面向对象 面向对象是基于面向过程的编程思想. 面向对象和面向过程的区别:面向过程强调的是每一个功能的具体步骤.面向对象强调的是对象,然后由对象去调用功能. (2)面向对象的思想特点 A:是一种更符合我们思考习惯的思想 B:把复杂的事情简单化 C:让我们从执行者变成了指挥者 举例: 买电脑 面向过程:了解电脑---了解自己的需求---对比电脑参数---去中关村买电脑--买