韩顺平JAVA学习笔记(1)

面向对象的三大特征

创建类的对象 = 类的实例化 = 实例化类

类和对象的使用(面向对象思想落地的实现):

  1. 创建类,设计类的成员

  2. 创建类的对象

  3. 通过“对象,属性“或”对象,方法“调用对象的结构

如果创建了一个类的对个对象,则每个对象都独立的拥有一套类的属性。意味着,如果我们修改一个对象的属性a,则不影响另外一个对象的属性a的值。

子类对象的实例化全过程

  1. 从结果上看:(继承性)

    ​ 子类继承父类以后,就获取了父类中声明的属性和方法。

    ​ 创建子类对象,在堆空间中,就会加载所有父类中声明的属性。

  2. 从过程上来看:

    ​ 当我们通过子类的构造器创建子类对象时,我们一定会直接或间接的调用父类的构造器,接着调用其父类的父类的构造器,直到到Object类为止。所以我们可以在内存中看到父类的结构。

    匿名对象 :在创建对象时,没有直接声明名称。

    	Class Phone {
            Phone p = new phone();//普通方式创建对象
            p.sendEmail();//匿名对象只能直接调用方法
            new Phone().sendEmail();//匿名对象调用属性
            new Phone().price = 1999;
    	}
    

1.封装性

​ 把抽象出的数据[属性]和对数据的操作[方法]封装在一起,数据被保护在内部,程序的其他部分只有通过被授权的操作[方法],才能对数据进行操作。

优点

  • 隐藏实现细节

  • 可以对数据进行验证,保证安全合理

    实现步骤

    1. 将属性进行私有化private 【不能直接修改属性】
    2. 提供一个公共的(public)set方法,用于对属性判断并进行赋值
    3. 提供一个公共的(public)get 方法,用于获取属性的值

2.继承性

​ 继承可以解决代码复用,当多个类存在相同的属性(变量)和方法时,可以从这些类中抽象出父类,所有子类只需要继承父类,便可使用这些属性和方法。

继承的基本用法: class 子类 extends 父类{}

		1. 子类会自动拥有父类定义的属性和方法
		1. 父类又叫超类,基类。
		1. 子类又叫派生类。

继承细节:

  1. 子类必须调用父类的构造器,完成父类的初始化

  2. 当创建子类对象时,不管使用子类的哪个构造器,默认情况下总会去调用父类的无参构造器,如果父类没有提供无参构造器,则必须在子类的构造器中用 super 去指定使用父类的哪个构造器完成对父类的初始化工作,否则,编译不会通过。

  3. 如果希望指定去调用父类的某个构造器,则显式的调用一下 :super(参数列表)。

  4. super() 和 this() 都只能放在构造器第一行,因此这两个方法不能共存在一个构造器。

  5. 父类构造器的调用不限于直接父类!将一直往上追溯直到 Object 类(顶级父类)。

  6. 子类最多只能继承一个父类(指直接继承),即 java 中是单继承机制。

    super关键字

    super 代表父类的引用,用于访问父类的属性,方法,构造器

    基本语法

    1. 访问父类属性(不能访问private属性)

      super.属性名

    2. 访问父类方法(不能访问private方法)

      super.方法名(参数列表);

    3. 访问父类构造器

      super(参数列表);只能放在构造器的第一句,只能出现一句!

super和this的比较

区别点thissuper
访问属性访问本类中的属性,如果本类中没有此属性则从父类中继续查找从父类开始查找属性
调用构造器访问本类中的方法,如果本类中没有此方法则从父类中继续查找从父类开始查找方法
调用构造器调用本类构造器,必须放在构造器的首行调用父类构造器,必须放在子类构造器的首行
特殊表示当前对象子类中访问父类对象

3.多态

​ 方法或对象具有多种形态。是面向对象的第三大特征,多态是建立在

封装和继承基础之上的。

多态的具体表现

  1. 方法的多态(方法的重写和重载)

    方法的重写即子类继承父类,重写父类方法

    方法的重载指在一个类中有多个方法名相同但参数不同的方法

  2. 对象的多态

    • 一个对象的编译类型和运行类型可以不一致
    • 编译类型在定义对象时,就确定了,不能改变
    • 运行类型是可以改变的
    • 编译类型看定义 = 的左边,运行类型看右边

多态注意事项:

  1. 多态的前提是:两个对象(类)存在继承关系
  2. 多态的向上转型
    • 本质:父类的引用指向了子类的对象
    • 语法:父类类型 引用名 = new 子类类型();
    • 特点: 可以调用父类中的所有成员(需遵守访问权限),不能调用子类中的特有成员;
  3. 多态的向下转型
    • 语法:子类类型 引用名 = (子类类型)父类引用;
    • 只能强转父类的引用,不能强转父类对象
    • 要求父类的引用必须指向的是当前目标类型的对象
    • 当向下转型后,可以调用子类类型中的所有成员

java的动态绑定机制

  1. 当调用对象方法的时候,该方法会和该对象的内存地址/运行地址绑定
  2. 当调用对象属性时,没有动态绑定机制,哪里声明哪里使用

多态的应用

  1. 多态数组 :数组的定义类型为父类类型,里面保存的实际元素类型子类类型(调用子类特有方法需要用到向下转型)

  2. 多态参数 :方法定义的形参类型为父类类型,实参类型允许为子类类型

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值