Java系列学习(七)-继承

1.代码块

(1)在java中,使用 { } 括起来的代码 被称为代码块

(2)分类:

A:局部代码块

【局部位置】

【作用:用于限定 变量的生命周期】

B:构造代码块

【在类中的成员位置,用{}括起来的代码。每次调用构造方法执行前,都会先执行构造代码块。】

【作用:可以把多个构造方法的共同 代码放到一起,对对象进行初始化】

C:静态代码块

【在类的成员位置,用{}括起来的代码,只不过它用static修饰了】

【作用:一般是对类进行初始化】

(3)结论:

A:执行顺序 :

【静态代码块 > 构造代码块 > 构造方法】

B:静态代码块:只执行一次

C:构造代码块:每次调用构造方法都会执行

2.继承

(1)把多个类中相同的成员给提取出来 定义到一个独立的类中,然后让多个类和该独立类产生一个关系。

     这种关系,就叫做继承。

(2)Java中表示继承

A:用关键字  extends 表示

B:格式

(3)继承的好处:

A:提高了代码的复用性

B:提高了代码的维护性

C:让类与类产生了一个关系,是多态的前提

(4)继承的弊端:

A:让 类的耦合性增强。这个类的改变,会影响其他和该类相关的类

【原则:低耦合,高内聚 】

【耦合:类与类的关系】

【内聚:自己完成某件事情的能力】

B:打破了封闭性

(5)Java中继承的特点:

A:Java中类只支持单继承

B:Java中可以多层继承

(6)继承的注意事项

A:子类不能继承父类的私有成员

B:子类不能继承父类的构造方法,但可以通过 super 去访问

C:不要为了部分功能而去继承

(7)什么时候使用继承

A:继承体现 的是:is  a  的关系(苹果 is a 水果)

B:采用假设法

(8)Java继承中的成员关系

A:成员变量

【子类的成员变量名称 和 父类的成员变量名称 不一样】

【子类的成员变量名称 和 父类的成员变量名称 一样】

【子类中 调用父类中 指定成员变量 】

B:构造方法

【子类的构造方法默认会去访问父类的无参构造方法】

【子类中如果没有无参构造方法】

方法一:在父类中加一个带参数的构造方法

方法二:通过super关键字去显示的调用父类的带参数构造方法 

方式三:子类通过this去调用本类的其他构造方法

【子类中一定要有一个去访问父类的构造方法,否则父类数据就没有初始化】

【注】this(…) 和 super(…) 必须放在第一条语句,否则会对父类进行多次初始化

C:成员方法

【子类的成员方法名称 和 父类的成员方法名称 不一样】

【子类的成员方法名称 和 父类的成员方法名称 一样】

(9)this与super

A:区别

【this代表本类对应的引用】

【super代表父类存储空间的标识(可以理解为父类引用,可以操作父类的成员)】

B:使用

【调用成员变量】

this.成员变量--调用本类的成员变量

super.成员变量--调用父类的成员变量

【调用构造方法】

this(…)--调用本类的构造方法

super(…)--调用父类的构造方法

【调用成员方法】

this.成员方法--调用本类的成员方法

super.成员方法--调用父类的成员方法

3.方法的重写(Override)

(1)定义:

子类中出现了和父类中方法声明一模一样的方法

(2)应用:

当子类需要父类的功能,而功能主体子类有自己特有的内容时,可以重写父类中的方法。这样,既沿袭了父类的功能,又定义了子类特有的内容

(3)使用方式:

(4)注意事项

A:父类中私有方法不能被重写

【因为父类 私有方法,子类根本就无法继承】

B:子类重写父类方法时,访问权限不能更低

【子类权限 最好 和父类一致】

C:父类静态方法,子类也必须通过静态方法进行重写

【这个算不上重写,但是现象确实如此】

时间: 2024-08-12 13:47:59

Java系列学习(七)-继承的相关文章

Java系列学习(七)-面向对象

1.成员变量和局部变量的区别 (1)在类中的位置不同 成员变量:类中 方法外 局部变量:方法中 (2)在内存中的位置不同 成员变量:在堆中 局部变量:在栈中 (3)生命周期不同 成员变量:随着对象的创建而存在,随着对象得到消失而消失 局部变量:随着方法的调用而存在,随着方法的调用完毕而消失 (4)初始化值不同: 成员变量:有默认值 局部变量:没有默认值,必须定义,赋值,然后才能使用 2.匿名对象 (1)没有名字的对象 (2)应用场景: A:调用方法,仅仅只调用一次的时候 B:可以作为实际参数传递

Java解惑七:更多类之谜

谜题66 继承的问题. 对于实例方法:命名相同时,子类会覆写父类的方法,且访问权限至少和父类一样大. 对于域:命名相同时,子类会隐藏父类的域,且访问权限任意. 谜题67 不要重用库中的类名. 谜题68 命名的问题. 类名应该以大写字母开头,形式为:MixedCase. 变量以小写字母开头,形式为:mixedCase. 常量以大写字母开头,形式为:MIXED_CASE. 单个大写字母,只能用于类型参数,形式为:Map<K, V>. 包名应该都是小写,形式为:lower.case. 当一个变量和一

Java二十周年之我和java的七年之痒

我和java的七年之痒                              ----java二十周年征文 粉淡香清自一家,未容桃李占年华. java,今已二十桃李年华之年.我七年前与她结缘,那年她年华豆蔻,我弱冠有六.我们从相识到相守走过了七个冬夏,都说七年有痒,值CSDN java二十年征稿之际,我也想说说我们的七年,痒从何来: 七年前,我和java她还未曾谋面,草率的以为她是it的一部分,那时对我来讲it和娱乐圈是一样一样的,神秘而遥远.当时我在做销售工作,每周都有到外地出差,经常买些

Thinking in Java 第七章 3-1

Thinking in Java第七章研读3-1总结 问题引入:如何复用代码 1.新的类是由现有类的对象所组成,方法称为组合.(该方法只是复用了现有程序代码的功能,而非他的形式) 2.按照现有类的类型创建新类.方法称为继承.(该方法无需改变现有类的形式,采用现有类的形式并在其中添加新代码) 3.代理proxy 组合Demo(存在问题:对象引用的初始化) 1 package com.thxy.section.seven; 2 3 public class Compo { 4 public stat

JAVA中的继承

1.什么是继承 基于一个已存在的类,创建一个新的类.已存在的类即父类,新的类即子类,继承就是子类继承并拥有父类的属性和方法,同时,子类还有拥有父类所不具有的属性和方法. 父类,也称为基类.超类(superclass):子类,也称为派生类. 2.JAVA中"继承"的特点 JAVA中一个类只能继承一个父类.不像C++等语言那样,可以继承多个类.这也是JAVA比较容易学的一方面 只能继承父类中非private成员属性和方法,private是父类所特有的不能继承 3.JAVA中的"继

java中子类继承

[[email protected] java]# vim Ostrich.java //注意文件名必须是这个,因为下面代码中只有Ostrich是public修饰符.我们要明白public的含义 class Bird { public void Fly() { System.out.println("I am bird I can fly"); } } public class Ostrich extends Bird { public void Fly() { System.out.

JAVA 笔记 七

JAVA笔记七 this:就代表本类的对象,this代表它所在函数所属对象的引用简单说:那个对象在调用this所在的函数,this就代表那个对象静态:static 用法:是一个修饰符,用于修饰成员(成员变量,成员函数)当成员被静态修饰后,就多了一个调用方式,除了可以被对象调用外,还可以直接被类名调用.类名.静态成员static特点1.随着类的加载而加载2.优先于的对象存在3.被所有对象所共享4.可以直接被类名所调用实例变量和类变量的区别:1.存放位置. 类变量随着类的加载而存在与方法区中. 实例

Java中的继承、封装、多态的理解

Java中的继承.封装.多态 继承的理解: 1.继承是面向对象的三大特征之一,也是实现代码复用的重要手段.Java的继承具有单继承的特点,每个子类只有一个直接父类. 2.Java的继承通过extends关键字来实现,实现继承的类被称为子类,被继承的类称为父类(有的也称其为基类.超类),父类和子类的关系,是一种一般和特殊的关系.就像是水果和苹果的关系,苹果继承了水果,苹果是水果的子类,水果是苹果的父类,则苹果是一种特殊的水果. 3.Java使用extends作为继承的关键字,extends关键字在

Java面向对象的继承

继承也是面向对象的又一重要特性,继承是类于类的一种关系,通俗来说狗属于动物类,那么狗这个类就继承了动物类 java中的继承是单继承的,一个类只能继承与一个父类 子类继承父类之后,子类就拥有了父类的所有属性和方法,private的除外,优点就是可以提高代码的复用性,简单的继承实例如下: 1 public class Dog extends Animal { 2 //Dog类继承了Animal类中的所有非私有的属性和方法,可以直接使用了 3 } 使用继承还是挺简单的 方法重写 如果子类对继承父类的方