Java 面向对象02

简介: 面向对象 继承 重写 重载

面向对象三大特性之 继承

继承的优点:

1.    提高代码的重用性;
2.    完善类的管理;

继承的实例引入:

生活中的继承:
1.    父亲有的东西,可以给予儿子;
2.    父亲私有的,不可以给儿子;
3.    儿子的还是儿子的,不给予父亲;
4.    一个儿子,只可以有一个亲生父亲;
5.    一个父亲,可以有多个亲生儿子;

java中的继承

指的就是两个类,组成了继承关系;
一个是父类,一个是子类;
java中 所有的类,如果没有显式的定义继承了某个类,那么就隐式的继承了 Object;
java中 所有的类,都是直接或间接的继承了Object类;

继承的格式

关键字 extends;
格式
[修饰符]     class 子类名 extends 父类名 {
    类体

}

继承的特性:

1.    父类的属性 和 方法 都可以给予子类;
    属性、设定器、访问器、功能方法;
    构造器见下面详细分析;

2.    父类的私有的不给予子类;
    private 子类不能享有;
    在权限的控制下,有些成员 子类不能获得;

总结: 当且仅当 子类有权限时,才可以继承父类;

3.    子类的成员 并不能 给予 父类;

继承当中父类构造器的问题!

1.    子类没有从父类得到构造器
    使用 super 可以调用父类构造器, super要位于第一行;
2.    new 子类构造器,会先执行父类的构造器
    new 某类构造器,会先执行其父类的构造器;
    如果父类还有父类,那么就先执行爷类的构造器;

    如果人为没有定义调用父类的有参的构造器,那么就会默认的调用父类的无参的构造器;

执行完构造器之后产生效果:

创建对象
并不是单纯的创建了子类的对象,而是创建了一堆对象;
父类也被创建,以内部对象的形式存储;
每个对象都拥有自己一份属性,拥有自己的父类对象,父类对象拥有自己的一份父类属性;

构造器创建对象内存图

image.png

父类属性和子类属性

父类有的属性,子类可以再度定义属性;

子类和父类有相同的属性,一定要明确,用的是父类的属性,还是子类的属性;
默认使用子类的

如果子类没有,才会自动追溯找父类;
如果子类有,需要给super 才会追溯找父类;

总结:父类有了XXX属性,子类就不要在定义了!!

方法的重写

前提:
    父类的某些方法,满足不了子类的需求;

    方法的重写,又叫做方法的覆盖;

方法重写的条件:

基础 发生在父类和子类中,父类和子类都有同样(方法名 和 参数类型);
1.    子类重写的方法,必须大于等于 父类的方法权限;
2.    返回值类型 必须 小于等于 父类方法的返回值类型;
        要么是类型相同,要么是子类类型;
3.    抛出的异常 必须小于 等于 父类的异常类型;

方法重写的好处:

符合子类的需求,有限制行的是子类的;


重写 Object 的 equals方法: 最好判断一下 this.name 是不是null;

image.png
父子类型相关存储

父类类型 可以 存储 子类的对象!

父类类型存储了子类型对象,只能拥有自己本身的成员;
虽然对象本身仍然拥有子类定义的成员,但是不能用;

强制类型转换 为 子类型 查看;

子类对象,可以自动的 储存给 父类的变量(引用);
父类对象,不可以自动 给 子类变量存储,需要强制转换;

强转格式:

        子类型变量  =  (子类型)父类型;
    如果强转的类型 不匹配,那么就会异常!


instanceof:

关系运算符;    关系表达式,最终返回true值;

格式:

    对象   instanceof  类名;  这就是一个关系表达式
    如果对象 是这个类的实例,那么结果就是true
    反之 就是 假 false;

相关文章
|
20天前
|
Java 关系型数据库 数据库
面向对象设计原则在Java中的实现与案例分析
【10月更文挑战第25天】本文通过Java语言的具体实现和案例分析,详细介绍了面向对象设计的五大核心原则:单一职责原则、开闭原则、里氏替换原则、接口隔离原则和依赖倒置原则。这些原则帮助开发者构建更加灵活、可维护和可扩展的系统,不仅适用于Java,也适用于其他面向对象编程语言。
13 2
|
2月前
|
Java 编译器
封装,继承,多态【Java面向对象知识回顾①】
本文回顾了Java面向对象编程的三大特性:封装、继承和多态。封装通过将数据和方法结合在类中并隐藏实现细节来保护对象状态,继承允许新类扩展现有类的功能,而多态则允许对象在不同情况下表现出不同的行为,这些特性共同提高了代码的复用性、扩展性和灵活性。
封装,继承,多态【Java面向对象知识回顾①】
|
2月前
|
Java
java中面向过程和面向对象区别?
java中面向过程和面向对象区别?
35 4
|
2月前
|
Java
接口和抽象类【Java面向对象知识回顾②】
本文讨论了Java中抽象类和接口的概念与区别。抽象类是不能被实例化的类,可以包含抽象和非抽象方法,常用作其他类的基类。接口是一种纯抽象类型,只包含抽象方法和常量,不能被实例化,且实现接口的类必须实现接口中定义的所有方法。文章还比较了抽象类和接口在实现方式、方法类型、成员变量、构造方法和访问修饰符等方面的不同,并探讨了它们的使用场景。
接口和抽象类【Java面向对象知识回顾②】
|
1月前
|
存储 Java 程序员
Java基础-面向对象
Java基础-面向对象
16 0
|
2月前
|
安全 Java Go
面向对象程序设计语言:Java
Java语言语法和C语言和C++语言很接近,很容易学习和使用,Java丢弃了C++中很少使用的、很难理解的、令人迷惑的特性,Java语言不使用指针,而是引用,并提供了自动分配和回收内存空间,使得程序员不必为内存管理而担忧
56 2
|
3月前
|
Java 数据处理 开发者
【Java基础面试十二】、说一说你对面向对象的理解
这篇文章阐述了面向对象是一种以类和对象为基础,通过封装、继承和多态等概念来模拟现实世界中的事物及其相互关系的程序设计方法,它强调以事物为中心进行思考和系统构造,与结构化程序设计相比,更符合人类的自然思维方式。
【Java基础面试十二】、说一说你对面向对象的理解
|
3月前
|
Java
【Java基础面试十三】、面向对象的三大特征是什么?
这篇文章介绍了面向对象程序设计的三大基本特征:封装、继承和多态,其中封装隐藏对象实现细节,继承实现软件复用,多态允许子类对象表现出不同的行为特征。
【Java基础面试十三】、面向对象的三大特征是什么?
|
2月前
|
Java 开发者
Java 面向对象
Java 是一种面向对象的编程语言,通过对象与类的概念组织代码和数据。面向对象编程的核心包括类、对象、继承、多态、封装和抽象。类是对象的蓝图,定义了属性和行为;对象则是类的实例。继承允许子类继承父类的属性和方法,增强代码复用性;多态则支持通过相同接口调用不同类型对象的行为,包括方法重载和重写。封装通过公共方法隐藏对象细节,提高安全性;抽象则对对象特征进行提炼,通过抽象类和接口实现。理解这些概念有助于设计高效、可维护的 Java 应用程序。
|
3月前
|
Java 开发者 C++