继承

一、类:分析一类事物的属性和方法

(一)父类:学生类:
   属性:姓名、年级、学号、性别
   方法:学习
(二) 子类:大学生类:
   属性:专业、姓名、年级、学号、性别
   方法:学习
(三) 子类:高中生类:
   属性:兴趣课、姓名、年级、学号、性别
   方法:学习

二、继承

(一)继承:能够让一个(子)类拥有另一个(父)类的属性和方法。
关键字:extends
格式: public class 子类名 extends 父类名{ }
extends:延伸。子类是在父类的基础上,对属性或者方法进行延伸、扩展得到的新类。

比如:	public class 大学生 extends 学生{    
            子类的属性和方法如果与父类完全一致,可以省略不写  }

(二)Object:是java中所有其他类的父类。
(三)现实生活中还有哪些继承关系?
    电脑 笔记本电脑
    老师 小学老师
    鹿 麋鹿

三、访问权限

(一)访问权限:用于控制被修饰的内容能在哪些范围使用。
在这里插入图片描述

(二)子类能拥有父类的哪些属性和方法?
所有的(部分属性和方法限于访问权限,不能直接使用。)

四、重写、重载与转型

(一)重写
1、概念:父类的方法不能满足子类的需要,则子类可以覆盖父类的方法。
详情:(1)当子类出现和父类一模一样的函数时,当子类对象调用该函数,会运行子类函数的内容,如同父类函数被覆盖了一样。
   (2)当子类继承父类,沿袭了父类的功能到子类中,但是子类虽具备该功能,但是功能的内容和父类不一致,这时,没有必要定义新功能,而是使用覆盖,保留父类的功能定义,并重写功能内容。
2、重写的要求如下:
(1)必须要有继承关系
(2)父类的方法,访问权限在子类中可见
(3)方法的声明:
3、注意:访问权限可以扩大(子类覆盖父类,必须保证子类权限大于等于父类权限,才可以覆盖,否则编译失败)。
返回值类型、方法名、参数名必须完全一样(static静态只能覆盖静态)。
(二)重载
1、概念:在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不同即可。
2、特点:与返回值类型无关,只看参数列表
3、好处:方便阅读,优化了程序设计
4、举例:

//返回两个整数的和
int add(int x,int y){
return x+y;
}
//返回三个整数的和
int add(int x,int y,int z){
return x+y+z;
}
//返回两个小数的和
doubel add(int x,int y){
return x+y;
}

(三)重载重写的区别
重载:只看同名函数的参数列表
重写:子父类方法要一模一样
(四)转型
自动转型:子类对象可以自动的变为父类对象。
自动转型后,方法调用的内容以子类为准。

比如:水果类是父类,水果类有吃的方法,西瓜类是子类,西瓜类有吃的方法(水果类与西瓜类吃的方法不一致);现在创建一个西瓜对象,则西瓜对象自动变为水果对象,并且调用吃的方法为西瓜类吃的方法,而不是水果类吃的方法。

五、子父类中的构造函数

(一)在对子类对象进行初始化时,父类的构造函数也会运行。
原因:子类的构造函数默认第一行有一条隐式的语句:super.();,super.();会访问父类中空参数的构造函数,而且子类中所有的构造函数默认第一行都是super.();。

(二)为什么子类一定要访问父类中的构造函数?
  因为父类中的数据子类可以直接获取,所以子类对象在建立时,需要先查看父类是如何对这些数据进行初始化的,所以子类在对象初始化时,要先访问父类中指定的构造函数。
如果要访问父类中指定的构造函数时,可以通过手动定义super语句的方式来指定。
注意:super语句一定定义在子类构造函数的第一行!

(三)子类实例化过程
1、子类所有构造函数,默认都会访问父类中空参数的构造函数。
2、当父类中没有空参数的构造函数时,子类必须手动通过super语句来指定要访问的构造函数。
3、子类的构造函数第一行也可以手动指定this语句来访问本类中的构造函数(子类中至少要有一个构造函数会访问父类中的构造函数)。

六、继承与final/abstract

(一)final
1、final:最终,作为一个修饰符
2、被final修饰的:不可以被继承。为了避免被继承后,被子类重写功能。
3、被final修饰的方法:不可以被重写。
4、被final修饰的变量:是一个常量,只能赋值一次。final既可以修饰成员变量,又可以修饰局部变量。
用法:当在描述事物时,一些数据的出现值是固定的,那么这时为了增强阅读性,都会给这些值起个名字,方便于阅读。而这些值不需要改变,所以加上final修饰,作为常量。
常量的书写规范:所有字母都大写,如果由多个单词组成,单词间用 _ 连接。
5、内部类定义在类中的局部位置上时,只能访问局部被final修饰的局部变量。

(二)abstract
1、抽象类的特点:
(1)抽象方法一定在抽象类中。
(2)抽象方法和抽象类都必须被abstract关键字修饰。
(3)抽象类不可以用new创建对象,因为对象调用抽象方法没有意义。
(4)抽象类中的抽象方法要被使用,必须由子类重写父类所有的抽象方法后,建立子类对象调用(如果子类只重写了部分抽象方法,那么该子类还是一个抽象类)。
2、抽象类一般类:
(1)抽象类与一般类没有太大的不同,该如何描述事物,就如何描述事物。只不过,该事物出现了一些看不懂的东西。这些不确定的部分,也是该事物的功能,需要明确出现,但是无法定义功能主体,通过抽象方法来表示。
(2)抽象类比一般类多了抽象函数,即在类中可以定义抽象方法。
特殊情况:抽象类中可以不定义抽象方法,这样做仅仅是为了不让该类建立对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值