首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Java面向对象三大特性学习总结

Java面向对象三大特性学习总结

作者头像
全栈程序员站长
发布于 2022-09-16 13:41:28
发布于 2022-09-16 13:41:28
46400
代码可运行
举报
运行总次数:0
代码可运行

大家好,又见面了,我是你们的朋友全栈君。

怀揣着对未来的憧憬,在三月份的时候选择来到华清远见进行Java学习。在大学时是有学习过Java的相关知识的,但是过了比较久的时间之后,大多数知识都已经忘得差不多了,在三月份时对于这门语言的认知还停留在边缘地带,并没有深入到知识的核心,对于许多知识点还停留在表面(也就是只是知道这个概念而已),所以来到华清远见进行学习,一切从零开始,认真学习,慢慢积累,多理解多思考。

在完成面向对象这一阶段的学习之后,让我对Java这门语言有了更深入的理解。

对于Java这门语言来说,万物皆可看为对象。Java语言是完全面向对象的语言,那什么是面向对象呢?在程序当中,使用对象来映射现实世界中的实体,使用对象之间的关系来对实体之间的联系进行描述,这种思想就是面向对象的思想。

什么是对象呢,简单来说,真实世界里一个个体就是一个对象,比如一个人是一个个体,那么他就是一个对象。一头大象是一个个体,它也是一个对象,一台冰箱是一个个体,这台冰箱也是一个对象。把对象进行抽象描述,就是类。类是Java语言最基本单位。对象是由类创建出来的。类是对象的集合,它由属性和方法组成。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.hqyj.oop.classes;

/**
 * 学生类
 */
public class Student {

    //属性  属性必须写在类里
    String name;
    int age;
    char sex;
    long number;

    //打印学生信息的方法
    public void studentInfo(){

        System.out.println("姓名:" + name);
        System.out.println("年龄:" + age);
        System.out.println("性别:" + sex);
        System.out.println("学号:" + number);
    }
}

创建的student对象,必须具有属性(成员变量):姓名name,年龄age,性别sex等,和行为(成员方法):工作、学习等。

创建好类之后使用new关键字来使用类。

面向对象的三大特性:封装、继承、多态。

一、封装

概述:将对象的属性和实现细节隐藏起来,不让外部程序直接进行访问,将属性私有化,仅对外公开接口,让外部程序通过类提供的方法来对隐藏信息进行访问和操作。好处是外部程序只能通过类规定的方法对数据进行访问,避免外界程序对类内部属性进行破坏。

如何进行封装:属性使用private修饰,提供公共的set和get方法。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
 * 实体类Person:私有化属性、提供setter&&getter、无参构造、有参构造、
 *
 * 面向对象的三大特征:封装,继承,多态 --(抽象)
 * 封装:私有化属性,提供公共的set和get方法
 */
public class Person {

    private String name;//将属性设置为private
    private int age;

    //提供set和get方法
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

四种访问修饰符:public、proteced、default(默认)、private

同一类中

同一包中

其他包的子类

其他包中的其他类

private

default

protected

public

Private:修饰的成员只能被这个类本身访问。

Default(默认):可以被这个类本身和同一个包中的类访问。

Protected:可以被这个类本身、它的子类和同一个包中的其他类访问。

Public:可以被任意类访问。

内部类:在一个类里定义了一个类,就叫内部类。

内部类的作用:内部类有更好的封装,内部类的信息隐藏在外部类中,不允许同一个包中的类访问。内部类只服务于外部类,可以获取外部类的所有属性和方法。

this关键字:

封装时经常会用到this关键字,当方法参数名称和属性名称同名时,this关键字能有效解决这个问题。

this.属性 调用当前属性

this.方法 调用当前方法

谁调用了this.属性或方法中的某个属性和方法,则this就指谁。

二、继承

继承可以对代码进行复用以提高编程的效率,继承就是子类获取父类的成员变量及成员方法。已经存在的类称为父类(也叫基类,超类),新构建的类称为子类(派生类)。Java中通过extend关键字声明一个类从另一个类继承而来。

父类:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class Father {
    String name;
    int age;
    double salary;

    public Father() {
        System.out.println("Father的无参构造方法...");
    }

    public Father(String name, int age, double salary) {
        this.name = name;
        this.age = age;
        this.salary = salary;
    }

    public void show(){
        System.out.println("Father...show...");
    }
}

子类:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class Son extends Father{

    public Son() {
        super();
        System.out.println("son的无参构造方法");
    }

    public Son(String name, int age, double salary) {
        //super关键字必须放在构造方法的第一行
        super(name, age, salary);
    }

    public void show(){
        System.out.println("show子类...");
    }

    public void sonShow(){
        System.out.println("sonShow...");
    }

    public static void main(String[] args) {
//        Son son = new Son("zhang3",18,10000)
//        son.show();
//        System.out.println(son.name);
        Father f =  new Son();//父类引用指向子类对象
        f.show();
        Son s = new Son();
//        s.sonShow();
        s.show();
    }
}

注意:

1.父类可以有多个子类,但子类只能继承一个父类(单继承,Java中不支持多继承)。一个子类不能继承多个父类,但可以实现多个接口。

2.子类不能继承父类中private修饰的属性和方法。

3.子类可以重写父类的方法。

方法的重写:

子类中的一个方法拥有与其父类中一个方法的相同的名称,参数,和返回值时,称为子类重写父类的方法。

父类:

子类:

输出结果:

重写的方法具有与其所重写的方法相同的名称、参数数量、类型和返回值。

Super关键字:

Java中通过super关键字来实现对父类成员的访问,super用来引用当前子类对象的父类。

1.通过super访问父类中隐藏的成员变量。

2.通过super调用父类中被重写的方法。

3.子类不继承其父类的构造方法,但可以通过super调用父类的构造方法。使用无参数的super时,调用父类无参构造方法。使用带参数的super时,调用父类有参构造方法。

4.调用父类的构造方法时,super关键字必须放在子类构造方法的第一行。

final关键字:

final修饰的成员变量不可改变,被final修饰的方法不能被子类重写,final修饰的类不能被继承。常见的被final修饰的类有String、Math等等。

被final修饰的成员变量进行初始化时有两种方式:

1.声明时初始化:final int age = 18;

2.在构造方法中初始化:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
final int age;
public Test {
Age = 18;
};

三、多态

在Java中,多态指调用同一个方法,不同的对象可能会有不同的行为。简单来讲,在生活中,一个人去吃饭,如果这个人是亚洲人,他可能会用筷子吃饭,如果这个人是欧洲人,他可能会用刀叉吃饭。吃饭这一动作,不同的人可能会用不同的方式去完成,这就是多态的体现。

多态实现的三个前提:

1.存在继承关系

2.必须要有方法的重写

3.父类的引用指向子类对象

通过一个例子来感受多态:

创建一个Person类

创建一个Asian类,继承Person类,重写Person类中的方法

创建一个测试类:

运行结果:

使用多态时,将Asian类向上造型成Person类,重写父类方法后,父类引用指向子类对象调用成员方法时,运行的是子类的方法体。(向上造型不能调用子类特有的成员方法)

若想要调用子类特有的成员方法,需要进行强制类型转换

向下造型:(前提:必须写出父类引用指向子类对象作为前提)

格式:子类类型 变量名 = (子类类型) 父类变量名;

向下造型后变量数据类型转换为子类类型,就可以调用子类特有的成员方法。

运行结果:

instanceof是判断某个引用指向的对象是否为指定类型

格式为:对象名 instanceof 类名

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/159975.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
夯实Java基础系列1:Java面向对象三大特性(基础篇)
本系列文章将整理到我在GitHub上的《Java面试指南》仓库,更多精彩内容请到我的仓库里查看
程序员黄小斜
2019/09/25
7410
Java面向对象三大特性
利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体。 数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节, 只保留一些对外接口使之与外部发生联系。用户无需知道对象内部的细节, 但可以通过对象对外提供的接口来访问该对象。
李红
2019/06/06
4490
Java面向对象三大特性
面向对象的三大特性讲义
多个类中存在相同属性和行为时, 将这些内容抽取到单独的一个类中, 那么这多个类就无需再定义这些属性和行为了, 只要继承那个类即可. 这个关系, 就叫继承.
用户8870853
2021/08/30
6270
java面向对象三大特性「建议收藏」
面向对象是一种符合人类思维习惯的编程思想。现实生活中存在各种形态不同的事物,这些事物之间存在着各种各样的联系。在程序中使用对象来映射现实中的事物使用对象的关系来描述事物之间的联系,这种思想就是面向对象。
全栈程序员站长
2022/09/08
8410
一篇文章讲清楚Java面向对象三大特性(基础篇)
面向对象简称 OO(Object Oriented),20 世纪 80 年代以后,有了面向对象分析(OOA)、 面向对象设计(OOD)、面向对象程序设计(OOP)等新的系统开发方式模型的研究。
Java技术江湖
2019/09/24
1.6K0
一篇文章讲清楚Java面向对象三大特性(基础篇)
(还在没有对象而发愁吗,new出来)->Java面向对象入门
强调的是我该怎么去做。即功能的执行过程,即先干啥,后干啥。在面向过程中,我们会写很多的函数,每一个函数负责完成某一个功能。
上分如喝水
2021/08/16
9410
(还在没有对象而发愁吗,new出来)->Java面向对象入门
Java核心基础知识:面向对象的三大特性讲义
上述的每一个步骤, 我们都是参与者, 并且需要面对具体的每一个步骤和过程, 这就是面向过程最直接的体现.
用户1880875
2021/08/26
4890
Java面向对象三大特性详解「建议收藏」
将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。
全栈程序员站长
2022/09/17
1.3K0
Java面向对象三大特性详解「建议收藏」
Java-面向对象
哈喽!大家好,我是小简。今天开始学习《Java-面向对象》,此系列是我做的一个 “Java 从 0 到 1 ” 实验,给自己一年左右时间,按照我自己总结的 Java-学习路线,从 0 开始学 Java 知识,并不定期更新所学笔记,期待一年后的蜕变吧!<有同样想法的小伙伴,可以联系我一起交流学习哦!>
小简
2023/01/04
1K0
Java-面向对象
Java面向对象
相当于中文语义”东西”。Object是指一个具体事物实例,比如飞机、狗、运气、哲学等等看得见的,看不见的,有形的,无形的,具体的,抽象的都是对象,总之“一切皆object”。
闲花手札
2021/08/24
6840
Java面向对象特性总结
如果是对于面向过程来说,这些你都得知道。“吾生也有涯,而知也无涯”,面向对象的封装与庄子的思想遥相呼应:用有限的时间去做更适合的事情。
Noneplus
2019/09/24
5450
Java面向对象特性总结
【面向对象编程】继承
在编程中,继承可以实现代码的复用,减少重复编写代码的工作量。通过继承,子类可以继承父类的属性和方法,并且可以根据需要进行扩展和修改,提高了代码的可维护性和可扩展性。再例如现实世界的复杂性,但事物之间存在某种共性,那么程序设计就需要考虑
用户11288949
2024/09/24
1430
【面向对象编程】继承
java基础学习_面向对象(下)02_day09总结
============================================================================= ============================================================================= 涉及的知识点有:   1:final关键字(掌握)   2:多态(掌握)   3:抽象类(掌握)   4:接口(掌握) ============================================================================= ============================================================================= 1:final关键字(掌握) (0)由于继承中方法有一个现象:方法重写。     所以,父类的功能,就会被子类给覆盖掉。     有些时候,我们不想让子类去覆盖掉父类的功能,只能调用但不能去覆盖修改。     这个时候,针对这种情况,Java就提供了一个关键字:final。 ---------------------------------------  (1)final是最终的意思,常见的final可以修饰类、方法、变量。 (2)fianl的特点: A:final修饰的类,不能被继承。 编译报错:无法从最终Fu进行继承 应用:最底层的那个类可以用final修饰,这样该类就不能有儿子了。(即绝育) B:final修饰的方法,不能被重写(覆盖/复写)。 编译报错:Zi中的show()无法覆盖Fu中的show() C:final修饰的变量,是一个常量,只能被赋值一次。 编译报错:无法为最终变量num2分配值
黑泽君
2018/10/11
4770
Java匹马行天下之JavaSE核心技术——面向对象
                  如下例所示,static修饰符用来创建类方法和类变量:
泰斗贤若如
2019/06/19
8410
Java匹马行天下之JavaSE核心技术——面向对象
Java匹马行天下之JavaSE核心技术——面向对象
Java中可以使用访问控制符来保护对类、变量、方法和构造方法的访问。Java 支持 4 种不同的访问权限。
泰斗贤若如
2019/11/09
5220
Java入门教程-面向对象
“类”是对事物,也就是对象的一种描述,可以将类理解为一张设计图,根据设计图,可以创建出具体存在的事物
哈德森
2023/04/07
2850
Java入门教程-面向对象
【10】JAVASE-面向对象-继承【从零开始学JAVA】
Java 是第一大编程语言和开发平台。它有助于企业降低成本、缩短开发周期、推动创新以及改善应用服务。如今全球有数百万开发人员运行着超过 51 亿个 Java 虚拟机,Java 仍是企业和开发人员的首选开发平台。
用户4919348
2024/05/25
810
【10】JAVASE-面向对象-继承【从零开始学JAVA】
Java关键词总结
final修饰可以保证安全性,比如数组的长度属性,String类,这些都是final修饰的,保证不可变
闲花手札
2021/08/24
3440
JAVA入门学习三
一个Java程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作。
全栈工程师修炼指南
2020/10/23
7850
JAVA入门学习三
Java学习笔记——面向对象编程(核心)
面向对象是相对于面向过程而言的。面向过程,强调的是功能行为。面向对象,将功能封装进对象,强调具备了功能的对象。 面向对象更加强调运用人类在日常的思维逻辑中采用的思想方法与原则,如抽象、分类、继承、聚合、多态等。
梦飞
2022/06/23
4590
相关推荐
夯实Java基础系列1:Java面向对象三大特性(基础篇)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档