JAVA基础篇继承与抽象

                                                                            JAVA基础篇继承与抽象
  1. 首先说一下什么是类 什么是对象
  2. 类是一切事物的模版,是抽象的,将现实中的事物 用类来描述
  3. 对象是类具体的体现,是一个具体的

什么是封装:把属性私有化,外界不能直接访问,提供get/set方法来访问,这样做提高了安全性,提高了代码的复用性,把相同的功能抽取出来,这样就提高了代码的复用性,缺点 耦合较高,一个类默认会提供一种使用方式 默认会提供一个无参构造,如果手动给了带参构造,系统将不在提供无参数构造

无参数构造方法的格式为 public 类名( ){ } 外界使用的时候 格式为 类名 变量 = new 类名();

匿名对象
如果把一个对象创建出来之后没有把这个对象的地址值赋值给任何一个变量,那么这个对象就是一个匿名对象,匿名对象的特点,只能使用一次,匿名对象也可以当作方法参数来传递
比如

public static void method(person p){ p.方法(); }

public static void main(String[] args){ method(new person()); }

method这里的参数就相当于 person p = new person();

将匿名对象的地址值赋值给p,p.方法名在对象里面这个方法也是一个地址值,调用的时候,会从方法区找到这个类,然后再从
这个类里面找这个方法,最后完成调用

继承
继承是java面向对象三大特征之一,另外两个特征分别是封装和多态,在java中继承描述的是事物之间的所属关系,继承的好处是提高了代码的复用性,比如林青霞属于人类,就可以继承人类的姓名 年龄 性别 只要继承了 父类有的,子类也都有,
这里的父类 值得是 人类,子类指的是林青霞 。

缺点:类与类的耦合提高了,这跟数据库的表很像都是在描述所属关系,由此可以联想到 类这个容器,对应的是数据库的表。(这句话为后期做个铺垫)

重写方法的原因:比如说 老鼠有个打洞的功能,他的儿子不仅会打洞 还会偷东西(打个比方) 子类的功能比父类更加强大

父类如何把所有功能给的子类,子类在堆内存中如何获取到父类的所有数据?
解答 new 子类的时候,在堆内存开辟空间,空间中有一块区域 专门存放父类,也就是说 new子类的时候 就已经包含了父类的所有数据

继承中成员变量的访问特点(总结一句话就近原则,子类如果有,就不会使用父类的东西)
继承中成员方法的访问特点:如果子类自己由此功能,将会覆盖父类的功能,相当于游戏的版本升级,比以前的功能更强,也可以一样(不过一般升级了就不会一样)

子类中出现了和父类一模一样的方法,那么久表示发生了方法的重写
解释一下@Override 是一个注解 这个注解用来验证一个方法是否是重写父类的方法
如果这个方法是重写父类的方法,加上@Override之后不会报错
如果这个方法不是重写父类的方法,那么加上@Override之后会报错
在这里插入图片描述

注解表示这个方法有没有重写,算是一个标记
方法重写的注意事项
方法的一切都与父类一致 方法名 参数 返回值
在方法重写的时候,要求子类方法的权限一定要大于等于父类的方法权限
如果这个方法不是重写过来的,加上标记会报错(不是死重写,就不要乱加)

在方法重写的时候,子类方法的返回值类型要和父类的方法返回值一样

方法重写的应用:一般来说 用于功能的增强,比如说 老版电脑玩游戏很卡,新版电脑也有玩游戏的功能,这样就可以重写老版电脑的玩游戏功能,并增强玩游戏的这个功能,这样玩游戏就不卡了

通俗说:如果父类方法不能满足子类的需求,那么子类就要重写父类的方法,来做一个增强

继承可以理解为:子类就是用来做一个对父类的扩展,举例 父亲是一条蛟,子类扩展延伸成一条龙,也可以不延伸,不延伸的话就是提高了代码的复用(子类啥都不干就是一条蛟)(这是自己的理解)

数据的相关性:功能的增强,因为子类
继承关系中构造方法的特点
创建子类对象的时候,会先执行父类的构造方法,原因是因为在子类的构造方法隐藏了一个super(),这个super是在调用父类的构造方法。

如果一个构造方法中第一行没有写出super() ,那么系统会自动添加一个 super() 这个super是在调用父类的构造方法

我们也可以使用super(参数)手动调用父类的构造方法 注意super() 在构造方法中只能存在一个。

super 和 this的概述
super 的三种用途 super代表当前的父类
可以访问父类的成员变量 格式是 super.变量名
可以访问父类的成员方法 格式是 super,方法名
可以访问类型的构造方法 格式是 super(“参数”) / super(); 注意 带参数的是访问父类的带参构造,不带参数的是 访问父类的无参构造。

this的三种用途 this代表当前的子类对象
访问本类的成员变量 格式是 this,变量名
可以访问本类的成员方法 格式是this.方法名
可以访问本类的构造方法 this(“参数”) / this() 注意带参数的是访问本类的带参构造,不带参数的是访问本类无参构造

this如果调用构造方法,提供将不会提供super,在一个构造方法,不能同时出现两个关键字,他俩只能出现一个

继承的特点
java中类与类之间只能单继承 一个类只能有一个父类,一个类只可以继承一个类,一个类可以被多个类继承
java中支持多级继承 一个类继承了一个父类,这个父类也可以有父类

抽象类:他是想象出来的,抽象的是在 某一领域无敌的存在 敌不动我不动
抽象访问不能存在于普通类中,一定要写在抽象类中

格式:public abstract class 类名{ } 有抽象方法 该类一定是个抽象类。
抽象方法,没有方法体
格式为 public abstract 返回值类型 方法名();

抽象类的使用
抽象类不能实例,抽象类是给子类用的,要通过子类去使用
定义子类,使用子类继承抽象类
在子类中重写抽象类中的抽象方法
创建子类对象,通过子类对象调用方法

抽象类的注意事项
抽象类不能创建对象
抽象类可以有构造方法的,抽象类的构造方法是给子类用的
抽象类中可以有抽象方法,也可以有普通方法、成员变量
一个普通类在继承抽象类的时候必须重写抽象类的全部抽象方法
一个抽象类在继承抽象类的时候可以不重写父类的抽象方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值