20220721 第五小组 罗大禹 学习笔记

20220721 第五小组 罗大禹 学习笔记

Java 面向对象继承

学习重点

1.方法的重写
2.包装器

学习心得

今天的学习内容努力努力还是可以跟的上的,但是老师下午讲的例子就有点跟不上了,这部分知识的还是不怎么熟悉,需要多加练习

学习内容

Java 面向对象继承

面向对象 继承

类与类之间的关系:(理解)
  1. 属性关系(has)
  2. 参数关系(use)
  3. 继承关系(is)
举例说明
/*	
建立四个类:Biology类 Animal类  Person类 Cat类

	  生物Biology   	间接继承(人是生物  猫是生物)

	  动物Animal    	直接继承(人是动物  猫是动物)

人Person  		 猫Cat

基类(子类)subcalss
Person、Cat、Animal可以叫做Biology类的子类
Animal叫做Biology的直接子类
Person和Cat叫做Biology类的间接子类,Person和Cat是Animal的直接子类

超类(父类)superclass
	 Person和Cat的直接父类是Animal(写在extends关键字后面的类)
 	 Person和Cat的间接父类Biology
 */
extends:继承(理解)

在Java中的继承是单继承:一个子类,只能有一个直接父类,但是可以有多个间接父类
extends后面只能有一个类(目前是对的,随着学习会被推翻,现在这么理解)

举例说明
public class Cat extends Animal{
    //Cat的直接父类为Animal
}
继承能干什么?(理解)
继承父类的属性及方法
  1. 创建子类对象时,父类先被实例化,再去实例化子类( 当一个类被实例化时,一定会先实例化它的直接和间接父类)

  2. 子类的构造器可以有多个,但是必须和父类的构造器形式上统一(若父类没有无参构造器,子类也不能有)

访问权限修饰符

public
protected 受保护的,不同包的子类可以访问
默认的
private

super关键字:

代表调用父类的结构(属性、方法、构造器)

this和super的区别?
  1. 在子类中当使用super调用父类的构造器时,super(age)必须是第一句话

    在当前类中使用this调用本类的构造器时,this(name)必须是第一句话

  2. 在构造器中,如果需要使用super或this调用其他构造器,只能二选一,而且必须放在第一句话

  3. super指向的父类,不代表任何对象。

    this指向的本类,代表当前类的对象,方法的调用者。

方法的重写(覆写,覆盖 override)(理解)
1.方法的重写
  1. 子类可以重写父类的方法

  2. 方法的重写可以利用到父类中方法已经运算过的结果,在结果的基础上进行扩展

  3. 方法的重写,体现的就是继承的核心,就是为了扩展父类的功能。

2.方法的重写的规则:前提,继承与被继承的关系
  1. 访问权限:重写的方法的权限不能低于被重写的方法。开发中一般都是等于(若父类方法的权限为protected,重写的方法权限至少为protected)
  2. 返回值类型:重写的方法的返回值可以和被重写的方法不同,但是必须是被重写方法的返回值的子类。开发中,一般就是一样。
/*父类中*/public Animal eat(){}
/*子类中*/public Cat eat(){}
//返回值类型不同,但Cat是Animal的子类,因此eat被重写了
/*父类中*/public double eat(){}
/*子类中*/public int eat(){}
//返回值类型不同,而且int不是double的子类,因此不是重写
  1. 方法名:必须相同

  2. 参数列表:参数类型,参数个数必须相同。

  3. 抛出异常:重写的方法不能抛出比被重写的方法更大的异常(目前未讲)

开发中,如果要重写,基本就是一模一样,我们只变方法体

举例说明
Animal类
public class Animal extends Biology{
    public void drank(String water){
        System.out.println("动物在喝"+water);
    }
}
Person类
public class Person extends Animal{
    public void drank(String water){
        System.out.println("人在喝"+water);
        System.out.println("喝完了"+water+"再来一杯");
    }
}
运行
public class Ch02 {
    public static void main(String[] args) {
        Person person = new Person();
        person.drank("酒");
        /*输出的结果为: 人在喝酒
        		喝完了酒,再来一杯
        */     
    }
}
posted @   怂还嘴硬  阅读(35)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
点击右上角即可分享
微信分享提示