继承、final、super、覆写、多态

本文详细介绍了Java中的继承概念,包括单继承、接口的使用以及继承的传递性。同时,讲解了super关键字的用途,如区分父类和子类的同名属性以及调用父类构造器。此外,讨论了方法覆写的重要性和条件,以及final关键字的应用。最后,重点阐述了多态的概念,展示了多态的三种形式,并解释了多态调用的特点。这些内容都是面向对象编程中的核心概念,有助于提升代码的复用性和灵活性。
摘要由CSDN通过智能技术生成

1.继承

1.1什么是继承

继承:

1.继承是从已有类中,派生出新的类,新的类拥有父类的属性和行为,并且还能扩展新的属性和行为

2.java中只支持单继承,不支持多继承,这样可以让java中的继承关系比较简单。一个类只能有一个父类,但是一个父类可以有很多子类。为了解决单继承功能变弱问题,java提出了接口,一个类可以实现多个接口。

3.继承是可以传递的,比如A继承B,B继承C,则A也会拥有C的属性和行为

4.私有属性和构造方法不能被继承

5.如果一个类没有显示继承其他类,则该类继承Object

1.2用处

解决的问题:提高了代码的效率,避免了代码的重写,提高代码重用性

1.3用法

[修饰符]  class  子类名  extends  父类名{ }

public class A{
public static void main(String[] args){
Sub sub = new Sub();
sub.m1();
sub.m2();
}
}
//父类
class Sup{
public void m1(){
System.out.println("父类的m1方法");
}
}
//子类
class Sub extends Sup{
public void m2(){
System.out.println("子类的m2方法");
}
}

2.Super

2.1什么是Super

super:

1.官方说法是保存了父类型特征

2.在有继承关系的体系中,可以通过super表示父类的数据

2.2用处

1.用在成员或构造方法中,区分父类和子类同名的数据(同名后,子类优先级高,想使用父类,就需要使用super.xxx才行)

2.用在子类构造方法中,调用指定的父类构造方法

  语法:super(参数);必须在子类构造方法第一行

  如果子类构造方法中,没有使用this(xxx)也没有使用super(xxx)则有一个super()去调用父类的无参构造

3.this和super都不能出现在静态上下文中

2.3用法

1.区分父类和子类同名属性

public static void main(String[] args){
Sub sub = new Sub();
sub.print();
}
class Sup{
int i = 10;
}
class Sub extends Sup{
int i = 20;
public void print(){
int i = 30;
//局部变量优先级高
System.out.println(i);
//this区分同名局部和成员
System.out.println(this.i);
//super区分父类和子类同名属性
System.out.println(super.i);
}
}

2.调用父类指定构造方法

class Sup{
//父类实例,父类构造,子类实例,子类构造
{
System.out.println("父类实例语句块");
}
Sup(int i){
System.out.println("父类构造方法");
}
}
class Sub extends Sup{
{
System.out.println("子类实例语句块");
}
Sub(){
//默认会有super()去调用父类的无参构造
super();
System.out.println("子类构造方法");
}
}

3覆写

3.1什么是覆写

override:是方法重写、覆写、覆盖,覆写特指成员方法,其他的都不能覆写

3.2应用场景

3.2.1覆写条件:

1.有继承关系的类体中

2.方法名必须一致,如果方法名不一致,就是两个方法

3.参数列表必须一致,如果参数列表不一致,这是方法重载,也是两个方法

4.返回值必须一致

5.不能有更宽泛的异常(异常只能越来越少)

6.不能有更低的访问权限

3.2.2覆写的意义:

1.功能越来越强

2.使用范围越来越广

3.错误越来越少

3.2.3什么需要对父类方法进行覆写

当父类的功能满足不了子类需求的时候需要对父类方法进行覆写

4final

4.1什么是final

final:是修饰符,表示最后的,最终的,不可更改的

类:final修饰的类,不能被继承

变量:final修饰的变量没有默认值,不能二次赋值,必须显示赋值(不能有不赋值的情况)

方法:final修饰的成员方法不能被重写

final修饰的静态变量一般称为常量,常量名建议全部大写

5多态

5.1软件设计六大原则

5.1.1单一职责原则

原则思想:一个方法只能做一件事,一个类只负责一个职责,这样当前职责改动不会对其他程序产生影响。

常识原则,几乎所有程序都会遵循这个原则

优点:降低类和类之间的耦合度,提高可读性,可维护性,降低可变的风险

5.1.2里氏替换原则

原则思想:能使用父类的地方就一定可以使用子类

子类还可以扩展父类的功能,但是不能更改父类的功能,并且子类还可以有自己特有的功能

优点:增加了程序的健壮性,即使有了新的子类,原子类不受影响,可以正常执行

5.1.3依赖倒置原则

原则思想:高层不应该依赖低层,都应该依赖于抽象

优点:拥抱多种变化,可以减少需求变化带来的工作量

5.1.4接口隔离原则

原则思想:类和接口之间应该建立在最小接口上

5.1.5迪米特法则

原则思想:又称为最少知识原则,一个对象尽可能的少了解其他对象

一个类中尽量减少对其他类的依赖

5.1.6开闭原则

原则思想:对修改关闭,对扩展开放

精良通过扩展软件实体来解决需求的变化,而不是通过修改已有的代码来完成变化

5.2什么是多态

多态就是里氏替换原则的一种体现,能使用父类的地方就一定可以使用子类

多态就是父类引用指向子类对象

父类引用:使用父类类型,创建的引用类型变量

指向:通过这个引用可以找到谁

5.3用法

多态的几种形式:

1.直接多态:父类  变量  =  new  子类();

2.形参\实参:参数列表用父类声明,调用方法,传递子类对象

3.返回值多态:返回值类型是父类类型,但是返回对象是子类对象

5.4多态属性调用

1.父类没有的,谁都调用不了(因为多态缺点,丢失子类特有的属性)

2.父类有的,子类没有的,执行父类

3.父类和子类都有,除了成员方法执行子类,其他全部执行父类(因为只有成员方法可以覆写)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值