继承与类的高级概念一些结论

本文详细介绍了面向对象编程中的继承概念,包括继承的基本定义、继承的优点、继承的使用原则及方法重写等内容。此外还探讨了super关键字的用法、final关键字的作用以及类的访问修饰符等高级主题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

继承

1、继承:
在面向对象编程中,可以通过扩展一个已有的类,并继承该类的属性和行为,来创建一个新的类,这种方式称为继承。

2、类与类的关系:

1)has-a(组合)

2)is-a(继承)

3、继承的优点

1)代码的可重用性
2)子类可以扩展父类的属性和方法
3)父类的属性和方法可用于子类
4)设计应用程序变得更加简单

5、继承的使用原则

1)观察要使用的类,确定它们之间共同的和特有的特征和行为,将这些共性数据迁移到父类里。
便于子类中进行方法和属性的重用。
2)如果两个类预计具有共同的行为和特征,那么使用继承设计他们的种类是比较好的 .

3)对于不同的特征和行为,在子类里可以重新定义

6、所有类的根类都是Object:
public final Class getClass();

public int hashCode();

public boolean equals(Object x);

protected Object clone() throws CloneNotSupportedException;

public String toString();

protected void finalize() throws Throwable;

public final void wait() throws InterruptedException;

public final void notify();

7、方法重写:
1)子类可以重写从父类继承的方法,从而允许子类添加或者改变父类中方法的行为。这称为方法重写,是OOP的特征之一。

2)方法重写发生在父类和子类之间,子类的方法方法名和父类相同,参数列表相同,返回类型相同

8、方法重写:

当子类重写父类的方法时,必须遵循如下的规则:
1)子类的方法的返回值的类型一致
1)方法名一致
3)形式参数列表一致
4)访问修饰符必须不小于父类中的访问修饰符
5)子类中重写的异常不能抛出比父类更多的异常

9、super的两种用法:

1:super.或super.()代表每个类中指向父类对象部分的引用

2:super()代表调用父类中指定的构造器。 、
注意:
构造方法不能继承,但要被子类调用

super()调用父类构造方法产生父类对象。只能放在子类构造器的第一句!

10、super关键字:
*要调用父类构造方法,使用关键字 super

*先调用父类构造方法,再调用子类构造方法

子类构造方法的名称与类的名称相同

11、final关键字:
变量不能修改
类不可被继承
方法不能被重写

1)java中继承只能为单根继承,一个类只能有一个父类

2)继承使用关键字extends实现。所有类的父类是Object

3)重写发生在父类和子类之间,子类的方法名和父类相同,返回类型相同,参数也相同

4)子类继承父类,在构造方法中必须通过super(),调用父类构造方法,然后再调用子类构造方法

5)final可以修饰类、方法、变量。修饰类,表示类不能被继承
修饰方法,表示方法不能被子类重写;
修饰变量,表示变量的值不能改变,也就是定义常量

6)继承可以增加代码的重用性,子类继承于父类,可以重用父类中定义的方法和属性

类的高级概念:

1)访问修饰符
类的每一个成员(包括成员变量、方法和构造器)都有一个访问修饰符,用来判断谁可以访问该成员。
2)
公开访问级别:使用public关键字修饰(该类或非该类均可访问

受保护访问级别:使用protected关键字修饰(该类及其子类的成员可以访问,同一个包中的类也可访问

默认访问级别:没有访问修饰符(相同数据包中的类可以访问)

私有访问级别:使用private关键字修饰(只有该类可以访问

2)封装:

访问修饰符的作用是限制属性和方法被使用和调用的范围。即指明了类的数据成员和方法的能够被访问的程度。

如果一个类的组件(数据成员或方法)被声明为私有类型(private),则任何该类外部的方法是无法访问该组件的。

3)get和set方法
get****()----访问器

set****()----修改器

4)封装的好处:类的成员变量可以成为只读或者只写的

类可以对存储在其成员变量中的内容有一个整体的控制

类的用户不需要知道类是如何存储数据的

5)静态类成员
static修饰的全局变量叫静态变量,也叫类变量,类变量的值为所有对象所共享

static修饰的方法叫静态方法,即类方法
,类方法只能使用静态变量,而不能使用非静态的全局变量

6)静态类成员

用类成员(类变量和类方法)不需要创建实例,可以通过:className.variableName的形式直接引用

有一点需要

注意:

静态方法不能访问非静态成员

非静态方法可以访问静态成员

7)什么时候使用static修饰呢?

工具类的工具方法--------》math.random

8)实例化初始块、
在产生对象时自动执行,在父类构造方法后本类方法前
(使用较少因为完全可以把代码写在本类构造方法的前几行)

9)静态初始化块、
在类加载的最前面
在类加载的时候自动执行,只会执行一次
(使用量大,通常把一些程序运行之前的准备工作放在这里让器加载期就完成准备)

10)内部类

在类的内部定义的类,称为内部类

内部类根据位置不同可以分为:

------》成员内部类--(特例)-----》{ 静态内部类 }

-------》局部内部类--(特例)---- 》{ 匿名内部类 }

转载于:https://www.cnblogs.com/wxiao/p/5215444.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值