2020-11-15学习笔记:面向对象三大特性:封装、继承、多态以及static,final,abstract关键字

面向对象三大特性:封装、继承、多态以及static,final,abstract关键字


1、 封装

  1.1 为什么要使用封装

    现实生活中有一些东西不愿意给每个人都可以直接触碰的,因为如果触碰到了这些东西,可能这些东西就会出了问题,所以想触碰这些东西应该要通过一些其他的工具或者方法才可以触碰。
    在编程语言中也是这样,我们不希望其他类可以直接接触我们类的一些属性或方法,而是通过其他的方式来访问或触碰我们的属性或方法,我们通常称为封装。

  1.2 如何使用封装

    java中的封装可以通过private关键字和get、set方法来对属性进行封装

1.手动添加get、set方法

public class GetSet{
	/**属性设置本类可见*/
	private String name;
	/**添加外部读取入口*/
	public String getName(){
		return this.name;
	}
	/**添加外部写入入口*/
	public void setName(String name){
		//可以设置写入限制
		this.name=name;
	}
}

2.使用eclipse对属性进行快速封装

在这里插入图片描述在这里插入图片描述

  1.3 访问修饰符与其作用

本类子类同包其他类
private(私有)Y
protected(受保护的)YY
(默认)YYY
public(公有的)YYYY
 访问修饰符可以直接添加在属性、方法或类的声明前

  1.4 构造方法

   构造方法是创建类时必要的方法,通过自定义构造方法,使得其他使用者在创建类时必须给定值,得以初始化类。

  1.5 方法的重载

   生活中、我们的同一台榨汁机可以完成不同的果汁混合,通过的是不同模式的压榨,最后压榨出来的结果是什么并不重要。在代码中也是这样,我们想通过一个相同的方法名去完成不同的功能时可以使用方法重载的特性。

方法重载规则:

  1. 方法名相同
  2. 参数列表不同
  3. 访问修饰符,和返回值不受影响
  4. 发生在同一个类中

2、 继承

  2.1 为什么要使用继承

   生活中、我们或多或少遗传(继承)了父母的一些天然特性,比如DNA,五官样貌 等等,父母生了两个,那么两个人都有父母的一些特性了,不用我们自己去改变了。代码中,我们可以用继承来模拟这一事件。

  2.2 如何使用继承

  伪代码:访问修饰符 class 自己的名字 extends 父母的基因 {}
   示例:public class MyClass extends SupClass{}

  2.3 方法的重写或覆盖

   比如我们继承了父母勤劳的品质,但是会发现,我们勤劳的程度比父母更高(低),所以我们就是覆盖了父母勤劳的程度(行为的覆盖)。代码中,意为方法的重写(覆盖)。

方法重写规则(如果要重写必须的规则):

  1. 访问修饰符覆盖范围必须等于或大于父类
  2. 返回值必须相同
  3. 方法名必须相同
  4. 参数列表必须相同

重写父类方法后,我们就可以在方法体内定义自己的具体"勤劳"程度了

  2.4 注意事项

1、构建子类对象时先调用父类构造方法。

   当父类只有一个有参构造方法时,子类的构造方法第一句必须显式调用父类有参构造的语句"super(参数列表 a…)"。因为创建子类对象时子类的构造方法隐式存在super(),即调用父类无参构造方法,此时若父类没有定义无参构造方法,所以会产生编译期错误。

2、

   注意事项还有啥?


3、 多态

  3.1 为什么要使用多态

   在父母眼中,他把你当作子女来看,父母并不知道你会不会搞电脑,会先询问你会不会搞电脑,在叫你搞电脑。因为不是所有的子女都会搞电脑,所以父母是把你当做子女对象来看待。
   在同学眼中,同学把你当作同学来看,会直接调用你的学习行为,因为所有的同学都应该有学习这个行为,所以可以直接调用。
   当父母想调用你的学习行为时,需要先把你当作学生来看待,在调用你的学习行为。
   原子是最大的类,也是世界的基本组成部分,当把我们当作最大类来看是,可以调用的行为少之又少,当想调用对象的独有行为,我们需要强制类型转换,把我们当作真实的对象来看,此时才能调用我们的独有方法。

  3.2 如何使用多态

   多态是一种思想:父类引用指向子类对象,进而可以产生多态,这是一种,将最大类的引用指向子类对象空间地址

	Object obj = new Person();

  3.3 多态的好处

   作为面向对象的三大特征,多态一定有它的好处

   3.3.1 使用多态实现方法接受不同参数

   用法律来作比喻,只要是人都会受到法律的限制,不论是学校的学生,或是学校的老师,都是人,都会受到法律的限制,因而用父类引用作为方法形参,是多态的一种高级应用。

   3.3.2 使用多态实现方法返回不同值

   用工厂来做比喻,传入一个参数实现返回不同的结果,不使用多态难以确定方法的返回值,使用多态只需要将返回值定义成所有物品的父类,使用时使用强制转换成对象的真实类型,这是一种多态的高级应用

  3.4 instanceof 运算符

   将真实类型是Object的对象强制转换会产生ClassCaseException异常,因此可以使用instanceof关键字,进行判断后进行强制转换,就可以避免这个问题

if(person instanceof Person){
	Person p=(Person)person;
}

4、 this、super、static、final、abstract关键字详解

  1. this:表示当前对象的那个成员,因此在不能对static修饰的成员进行引用,因为static是属于类的,可以调用本类的构造方法 调用本类无参构造方法 this()

  2. static:修饰符,仅仅能在类中使用,可以修饰类成员(变量,方法,内部类), 修饰后改成员可以属于类,对象也可以拥有,如每个生物可以看见太阳,但这太阳是属于类的,不是对象的,如果把太阳击落,那么所有生物都看不见太阳了,***不可用修饰局部引用 ***

  3. super:和this有一点类似,表示调用父类的某个非私有实例成员,也可以调用构造方法调用父类类无参构造方法 super()

  4. final:修饰符表示最终

    效果
    普通类该类不可被继承
    普通方法该方法不可类子类重写
    变量必须为变量赋值,改值不可在此被改变
    引用类型该引用指向的值不可改变,该空间里的值可以被改变,(数组长度不可变,下标指向的值可以改变。对于对象,对象的空间不可改变,其属性可以改变)
  5. abstract:修饰符 表示抽象,可以修饰非私有普通类、非私有普通方法

    修饰那个?效果
    该类必须被继承,不可实例化
    方法改方法所在的类一定是抽象类,该方法必须被重写,父类不是抽象类则编译错误

    抽象方法所在的类一定是抽象类,
    抽象类中可以没有抽象方法


学无止境,本篇介绍的还不够细致,更多的是需要自己去学习.
加油!未来互联网行业的栋才


已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 游动-白 设计师:白松林 返回首页