当前位置: 首页 > news >正文

JAVA子类与继承

目录

JAVA子类与继承

一、子类与父类:

二、子类与对象

三、成员变量的隐藏和方法重写

四、super关键字(P122)

五、final关键字

六、对象的上转型对象(P126)

七、继承与多态(P128)

八、abstract类和abstract方法


JAVA子类与继承

四种权限修饰符:

public  >  protected  >  (default)  >  private

类方法:实例方法与静态方法

对象调用实例方法,类名调用类方法

一、子类与父类:

Java不支持多重继承,一个子类只能继承一个父类

格式:class A extends B { …… }

继承性:子类继承父类中的成员变量与方法

子类父类在同一个包中,可以继承子类中除了private的成员变量

不在同一个包中,不继承除了private和(default)友好的成员变量,继承public和protected

二、子类与对象

子类可以继承父类的一些成员变量和方法,但是不能继承private的成员变量,子类继承父类的一部分方法,这部分方法可以操作未继承到的private变量

关于instanceof运算符:

左面是对象,右面是类,结果为true或者false

// 定义showEat方法,使用父类作为方法的形参,实现多态,传入的是哪个具体对象就调用哪个对象的eat()方法/********* begin *********/public static void showEat(Person a){if(a instanceof Chinese){Chinese c = (Chinese) a;c.shadowBoxing();}if(a instanceof English){English c = (English) a;c.horseRiding();}}/********* end *********/

三、成员变量的隐藏和方法重写

方法重载:一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不同。需满足下面两个条件之一:

  1. 参数的个数相同
  2. 参数的个数不同,但参数列表中对应的某个参数的类型相同

成员变量的隐藏:

子类可声明与父类相同的成员变量的名字,在这种情况下,可以将父类的成员变量隐藏

特点:

  1. 子类继承的方法所调用的成员变量一定是父类所隐藏的成员变量
  2. 子类自己定义的方法可以操作子类继承的以及新定义的成员变量

方法重写:通过方法重写可以隐藏已继承的方构造函数和静态方法不能重写!!!

子类定义的一个方法的类型与父类的一致,要满足:方法的名字,参数的个数,参数的类型与父类一致(四同!!!)

四、super关键字(P122)

  1. 使用super调用父类中被隐藏的成员变量以及方法,比如super.x,super.f()
  2. 使用super调用父类中的构造方法

子类不继承父类的构造方法,使用super调用父类的构造方法,且super必须是子类构造方法中的头一条语句。即子类继承父类,生成对象时必须先调用父类的构造方法,父类得有一个不带参数得构造方法,方便子类重写。

super( ); 默认为调用父类的构造方法(P124)

五、final关键字

可以修饰类,成员变量,方法中的局部变量

Final类不允许继承,final成员变量不允许重写,final方法中的局部变量或者全局变量为常量!

instanceof 左边对象,右边类

六、对象的上转型对象(P126)

用子类创建一个对象,且把这个对象放在父类中

Animal a;

a=new Tiger();

或者

Animal a;

Tiger b=new Tiger();

a=b;

  1. 上转型对象不可以调用子类新增的方法与成员变量
  2. 上转型对象不能操作子类新增的成员变量,不能调用子类新增的方法。上转型对象可以访问子类继承或隐藏的成员变量,可以调用子类继承的方法或子类重写的实例方法
  3. 上转型对象可以调用隐藏的变量继承的变量与方法以及重写的实例方法(若子类重写了父类的某个实例方法,则上转型对象调用的实例方法一定是重写之后的)
  4. 可以将对象的上转型对象强制转换为子类对象Tiger c=(Tiger) a;把上转型对象a强制转换为子类对象c
  5. 子类重写了父类的静态方法,则子类对象只能调用父类的静态方法
  6. 对象可调用:继承的变量与方法,新增的变量与方法,重写的方法

七、继承与多态(P128)

父类的方法被子类重写时,可以产生各自的功能行为

继承、重写、父类引用指向子类对象

八、abstract类和abstract方法

Abstract类:

  1. 只允许声明,不允许实现,没有方法体,该有的参数要有
  2. 不能用static和final修饰,必须是实例方法
  3. 非abstract类:不可有abstract方法;

abstract类:可以有abstract方法,可继承与重写,也可以有非abstract方法,若是子类,必须重写父类的抽象方法,且只能大于父类权限!

构造方法必须重写!!!

4、 可以使用abstract类声明对象,但是不能用new创建该对象

abstract class Person {
public Person() {};#必须重新声明一下
public Person(String name,int age){this.name=name;this.age=age;
}
}
abstract class Player extends Person {public Player() {super();}#同理需要声明!public Player(String name,int age){super(name,age);
}
}
http://www.lryc.cn/news/62888.html

相关文章:

  • 62 openEuler 22.03-LTS 搭建MySQL数据库服务器-管理数据库
  • 【分布式搜索引擎ES01】
  • 1.3 鞅、停时和域流-鞅(布朗运动与随机计算【习题解答】)
  • 十、ElasticSearch 实战 - 源码运行
  • GPT-3 论文阅读笔记
  • 方案解析丨数字人主播如何成为电商直播新标配
  • Python最全迭代器有哪些?
  • ESP32 网络计时器,包含自动保存
  • 【ChatGPT】阿里版 ChatGPT 突然官宣意味着什么?
  • IPEmotion控制模块-PID循环应用
  • 【元分析研究方法】学习笔记2.检索文献(含100种学术文献搜索清单链接)
  • 题目:16版.自由落体
  • 视频可视化搭建项目,通过简单拖拽方式快速生产一个短视频
  • network-1 4 layer internet model
  • 计算机网络笔记(横向)
  • 0.redis-实践
  • Redux的基本使用,从入门到入土
  • GDOUCTF2023-部分re复现
  • Java学习17(IO模型详解)
  • Vue-全局过滤器以及进阶操作
  • 财报解读:涅槃重生之后,新东方还想再造一个“文旅甄选”?
  • 华为OD机试 - 过滤组合字符串(Python)
  • maven简单使用
  • HTML学习笔记一
  • 人工智能十大流行算法,通俗易懂讲明白
  • 支持中英双语和多种插件的开源对话语言模型,160亿参数
  • SQL基础培训10-复杂查询原理
  • 如何搭建信息存储中心?资源共享方案之搭建ftp个人服务器
  • 【LeetCode】188. 买卖股票的最佳时机 IV
  • android studio RadioButton单选按钮