首页 > 其他分享 >第四讲 继承与多态 课后总结

第四讲 继承与多态 课后总结

时间:2022-10-16 19:00:41浏览次数:52  
标签:String 子类 多态 public 课后 抽象类 父类 方法 第四

什么是继承?

继承是对现实生活中的“分类”概念的一种模拟。

狮子拥有动物的一切基本特性,但同时又拥有自己的独特的特性,这就是“继承”关系的重要特性:通常简称为“IS_A”关系

class 子类名 extends 父类名

{......}

父类(parent class)和

超类(super class)通常指直接上级

基类(base class)

通常指包括直接上级在内的“上级的上级”

在Java中实现继承时

子类自动拥有父类声明为public和protected的成员,这就是继承特性的体现之一。

而继承条件下类的访问权限方面

public:外界可自由访问;

private: 外界不可访问;

protected: 同一包中的子类都可以访问,另一包中的子类(派生于同一个父类)也可以访问;

default: 如果不指明任何权限,则默认同一包中的类可以访问;

在子类的构造方法运行前,必须调用父亲的构造方法,不能反过来。

不允许继承的类

创建“不可变的类”的对象后,此对象的属性不可改,而且也无法从此类派生出新子类。String就是一个典型的例子。

 

 

不可变的“类”有何用?

 

可以方便和安全地用于多线程环境中, 访问它们可以不用加锁,因而能提供较高的性能。

 

 

final class 类名

 

 

 

 

{......}

以final声明的方法不允许覆盖。

 

 

以final声明的变量不允许更改。

 

 

利用final,可以设计出一种特殊的“只读” 的“不可变类”。

 

不可变类的实例:


public final class Address
{
private final String detail;
private final String postCode;

//在构造方法里初始化两个实例属性
public Address()
{
this.detail = "";
this.postCode = "";

}
public Address(String detail , String postCode)
{
this.detail = detail;
this.postCode = postCode;
}
//仅为两个实例属性提供getter方法
public String getDetail()
{
return this.detail;
}

public String getPostCode()
{
return this.postCode;
}
//重写equals方法,判断两个对象是否相等。
public boolean equals(Object obj)
{
if (obj instanceof Address)
{
Address ad = (Address)obj;
if (this.getDetail().equals(ad.getDetail()) && this.getPostCode().equals(ad.getPostCode()))
{
return true;
}
}
return false;
}
public int hashCode()
{
return detail.hashCode() + postCode.hashCode();
}
}

由于Java并未对子类方法的命名做过多的限制,因此,子类与父类各自定义的方法之间,可以出现以下三种情况

 

扩充(Extends):子类定义的方法父类没有同名

 

覆盖/重写(Override):子类父类定义了完全一样的方法

 

重载(Overloads):子类有父类的同名方法,但两者的参数类型或参数数目不一样

多态:

掌握多态概念的关键点

简单的说法: 相同的一条语句,在不同的运行环境中可以产生不同的运行结果。

多态的最本质特征就是父类(或接口)变量可以引用子类(或实现了接口的类)对象。换句话说:子类对象可以被当成基类对象使用!

其典型代码如下所示: Parent p=new Child(); IMyClass obj=new MyClass(); 总是可以让更一般的对象容纳更具体化的对象. 特别地,Java类库的最顶层类是Object。因此每个对象都可以赋值给Object变量。

总结(1):子类父类拥有同名的方法时……

当子类与父类拥有一样的方法,并且让一个父类变量引用一个子类对象时,到底调用哪个方法,由对象自己的“真实”类型所决定,这就是说:对象是子类型的,它就调用子类型的方法,是父类型的,它就调用父类型的方法。 这个特性实际上就是面向对象“多态”特性的具体表现。

总结(2):子类父类拥有同名的方法时……

如果子类与父类有相同的字段,则子类中的字段会代替或隐藏父类的字段,子类方法中访问的是子类中的字段(而不是父类中的字段)。如果子类方法确实想访问父类中被隐藏的同名字段,可以用super关键字来访问它。

如果子类被当作父类使用,则通过子类访问的字段是父类的!

牢记:在实际开发中,要避免在子类中定义与父类同名 的字段。不要自找麻烦!——但考试除外,考试 中出这种题还是可以的。

 

 

抽象类和抽象方法

有abstract修饰的类称为“抽象类”,它只定义了什么方法应该存在,不能创建对象,必须派生出一个子类,并在子类中实现其未实现的方法之后,才能使用new关键字创建对象。

在方法前加上abstract就形成抽象方法,只有方法声明,没有实现代码

 

 

抽象类、抽象方法实例

abstract class Person

{

public abstract String getDescription();

/}

 

一个抽象类中可以包含非抽象方法和成员变量。包含抽象方法的类一定是抽象类,但抽象类中的方法不一定是抽象方法

抽象类不能创建对象,一般用它来引用子类对象。

从抽象类继承的子类必须实现父类的所有抽象方法,否则,它仍然是抽象类

标签:String,子类,多态,public,课后,抽象类,父类,方法,第四
From: https://www.cnblogs.com/sion6/p/16796798.html

相关文章

  • 《Unix&Linux系统编程》第四章学习笔记
    目录第4章并发编程4.1并行计算导论1.顺序算法与并行算法2.并行性与并发性4.2线程1.线程的原理2.线程的优点3.线程的缺点4.3线程操作4.4线程管理函数1.创建线程2.线程I......
  • 云原生方案规划 第四阶段方案:云原生单元化技术 备份和恢复
    容器编排服务在云原生平台之上搭建备份和恢复组件用来对云原生应用进行备份和恢复。阿里云的容器编排服务的备份中心为无状态或有状态应用的备份、恢复与迁移提供了一站......
  • 多态性之包装类的使用
    packageWrapperTest;importorg.junit.Test;/***@authorliu$*@version1.0*@description:包装类的使用*@date2022.10.15$2022.10.15$*/publicclasswrapp{......
  • 【第四篇】Camunda系列-ProcessEngine核心对象
    一、ProcessEngine  ProcessEngine是Camunda流程引擎的核心。我们在流程中的很多具体的处理比如​​流程部署​​​、​​流程部署​​​、​​流程审批​​​等操作都是......
  • 代码随想录算法训练营第四天 | 24. 两两交换链表中的节点 19.删除链表的倒数第N个节
    24.两两交换链表中的节点本题是一道模拟过程的题目。搞清楚两两交换的步骤之后,写出对应的代码也就不是难题了。不过在学习题解的过程中发现,两两交换的步骤也有很多种实现......
  • 多态
     classMammal{}classDogextendsMammal{}classCatextendsMammal{}publicclassTestCast{publicstaticvoidmain(Stringargs[]){Mammalm;......
  • SDN第四次实验
    实验4:开源控制器实践——OpenDaylight一、实验目的能够独立完成OpenDaylight控制器的安装配置;能够使用Postman工具调用OpenDaylightAPI接口下发流表。二、实验环境Ub......
  • Java核心技术阅读笔记(第四章)
    Chapter4对象与类作者:Denis版本:1.0编写时间:2022/10/15编写地点:中国山西省4.1类与对象的概述可以把类想象为一个模具,利用类能够创造出很多同属于一个物种但参......
  • 20201306吴龙灿第四章学习笔记
    知识点归纳前言学习了解并发编程的概念,理解并行计算的概念和重要性;掌握线程的原理和其对于进程的优势。通过学习Pthread线程操作,了解如何使用线程进行并发编程;理解死锁问......
  • 03继承与多态
    源代码packageshiyan;classAnimal{voideat(){ System.out.println("animal:eat"); } } classDogextendsAnimal{ voideat(){ System.o......