java步入oop面向对象

Silent1376      2022-05-06     735

关键词:

面向对象编程 OOP Object Oriented Programming

面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。
面向对象是相对于面向过程来讲的,面向对象方法,
把相关的数据和方法组织为一个整体来看待,从更高的层次来进行系统建模,更贴近事物的自然运行模式

面向过程编程 POP Procedure Oriented Programming

是一种以过程为中心的编程思想。这些都是以什么正在发生为主要目标进行编程,不同于面向对象的是谁在受影响。

 

面向对象的几个重要特性

- 封装 Encaosulation 隐藏具体的实现细节,提供一个可访问的途径

- 继承 Inheritic 提高代码可重用性,抽取事物的共性

- 多态 Polymorphism  具体可实现的实例多样化

- 抽象 Abstract 对类的本身也抽象化了

 

面向对象程序设计的重点是对类的设计

设计类,就是设计类的成员

 

类和对象的关系?

什么是类? 类是对一类事物的描述,是概念的定义

理解类,对自然事物的归类,所具有的共性,就可归为一类

例如,人,猫,狗,就是对这些实际存在的动物进行归类,这只是笼统的描述,不是具体的实例 instance

就像说吃水果,只是描述,并没有具体指出是什么水果

 

对象,即描述的具体展现,是实际存在的事物,因此称为实例,

对象由类产生,具有类所描述的一切特性,主要包括特征和行为

特征即是对象的属性,行为即是对象的方法

package cn.dai;

public class Person {
    // 类的主要部分
    
    // 属性 == 字段 == 成员变量 == 域 == field
    int age;
    String name;
    
    // 行为 == 方法 == 成员方法 == 函数 == method == function
    public void walk(){
        System.out.println("行走,散步");
    }
    
    public void talk(){
        System.out.println("交流,谈吐");
    }
}

 

实例化与调用

package cn.dai;

public class Create {
    public static void main(String[] args) {
        
        // 创建我们定义的类的实例
        
        // 类名 引用名 引用指向 类实例
        Person person = new Person();
        
        // 引用可以访问我们的属性 .引用
        person.name = "张三";
        
        person.age = 22;
        
        // 还可以是我们的方法
        person.talk();
        person.walk();
    }
}

 

1 创建类,设计类成员

2 创建类的实例

3 调用实例的属性或者方法

 

类的多个对象的关系

- 每个创建出来的实例,在内存空间都有独立的存储空间 ,new 即代表新的意思

- 所以每个对象的属性和方法,是独立存在,而不是公用的

- 修改对象A的属性不会影响对象B的属性

 

关于new 关键字的解释:

https://blog.csdn.net/yanyuan904/article/details/80022647

https://blog.csdn.net/topdeveloperr/article/details/81194654

- 为对象开辟内存空间。

- 调用类的构造方法。

- 将生成的对象的地址返回。 

 

属性与局部变量

成员变量和局部变量的区别?

https://www.cnblogs.com/huangminwen/p/5935130.html

- 属性定义在类体当中

- 属性可以只声明不初始化赋值,当实例创建时,赋值为默认缺省值

- 属性的作用域可以在类中的所有成员方法中

- 局部变量 只声明在方法中

- 局部变量 声明必须要在方法中赋值

- 局部变量的作用域只作用在这个方法之内

- 属性加载在堆空间中,而局部变量加载在栈空间

 

访问权限的设置

- private 修饰的方法和属性或者内部类 只能作用在本类之内,外部无法访问

- default 默认不写的,允许在同一个包下访问

- protected 所继承的子类可以访问,子类可以不同包

- public 可以被任意访问

访问修饰级别的解释

https://blog.csdn.net/qq_41174684/article/details/90677921

 

方法/函数的用法

https://www.cnblogs.com/lavender-li/p/5681790.html

- 状态修饰  访问修饰

- 返回类型

- 方法名称

- 参数列表

- 返回值

- return 表示方法的结束,在方法体return之后写下的代码都不再执行,第二时携带返回值,要注意的是 return 不能声明执行语句

- 方法可以递归,但不能在方法中声明方法

package cn.dai;

public class Person {

    // [状态类型][访问级别] 返回类型 方法名称(参数列表) { 方法体 }
    public int summation(int ...args){ // 参数列表,可以是一个或者多个参数,没有类型限制,参数就是要执行方法前必需注入的数据,这里采用了一个可变参数
        
        // 具体执行实现的细节 也就是方法体
        int sum = 0;
        for (int param : args){
            sum += param;
        }
        return sum; // 方法的返回值,定义的int返回类型,所以值也必须是int类型的值,void 表示空,所以可不写return
    }
}

 

递归算法

https://blog.csdn.net/f5465245/article/details/77946468

 

构造方法 / 构造器 Constructor

https://blog.csdn.net/qiuzhongweiwei/article/details/78965788

 

https://blog.csdn.net/zqixiao_09/article/details/50550035

 构造重载 在初始化的同时注入参数

 

 

对象 / 实例 instance 的内存解析

 

匿名对象的介绍

https://blog.csdn.net/lxxiang1/article/details/82085271

- 匿名对象没有声明引用指向

- 匿名对象可以调用属性和方法

- 因为没有引用指向,在不是建造者模式的情况下,只能调用一次方法或者属性;

 

重载 Overload

https://www.cnblogs.com/xdp-gacl/p/3637321.html

- 在本类中允许一个以上的同名方法 但是此参数的个数和参数的类型不能相同

- 重载允许不同的返回类型和权限访问

 

可变参数 Variable Number Of Arguments

https://blog.csdn.net/lxxiang1/article/details/82312799

- 可变参数的本质是一个Object数组

- 可变指的是这个参数的个数可变

- 要注入多个参数,可变参数必须放在参数列表的最后一个

- 单个参数和同类型可变参数符合重载的规定

- 最多只允许声明一个可变参数

 

实参的值传递机制

- 当形参是基本类型时,是注入实参的数据值传递给形参【给的字面值】

- 当形参是引用类型时,是注入实参的地址值传递给形参【给的内存地址】

 

final关键字的解释:


- 可修饰类、方法、属性、

- 修饰类  被修饰的类不能被洽谈类所继承 

- 修饰方法  被修饰的方法不能被重写

- 修饰变量  

  被修饰的属性,有且只有一次赋值的机会  可以 1 显示初始化声明、2 代码块中初始化赋值、3 构造器中初始化

  被修饰的局部变量  表示是一个常量

- static final 表示为全局常量 

https://www.cnblogs.com/dolphin0520/p/3736238.html

static关键字的解释:

- 表示静态的,常态的

- 用来修饰 属性、方法、代码块、内部类

- 类创建的实例共享静态变量

- 静态变量随类的加载而加载

- 静态修饰的类成员优先实例加载,类只会加载一次,静态成员再内存中只存在一个,再方法区的静态域中

- 所以静态的,也可以称为是类的

- 静态方法 只能调用静态属性和静态方法

- 成员方法,静态非静态皆可

- 不能使用this,super

https://www.cnblogs.com/dolphin0520/p/10651845.html

 

静态代码块与非静态代码块

- 都是用来初始化类或者对象

- 静态的代码块,随着类加载而加载,可以设置加载信息,优先非静态代码块加载

- 非静态代码块,随着对象加载而加载,可以对属性注入

- 代码块按照编写顺序执行,不论是否静态

 

 

属性注入的位置;

- 声明即赋值   显示初始化

- 默认缺省

- 构造器注入

- setter注入

- 对象访问属性赋值

 

2021/5/16步入面向对象的程序《计算圆锥的体积》对象?什么是面向对象?男女朋友?主类地位最高?(代码片段)

步入面向对象。对象?什么是面向对象?男\\女朋友?主类地位最高?继承?封装?多态?什么是面向对象的三大特征?(计算圆锥的面积【用面向对象、方法的创建利用编程】)目录步入... 查看详情

java面向对象(oop)--面向过程&面向对象&oop详解

1.面向过程&面向对象语言的进化发展跟生物的进化发展其实是一回事,都是”物以类聚”。相近的感光细胞聚到一起变成了我们的眼睛,相近的嗅觉细胞聚到一起变成了我们的鼻子。语句多了,我们将完成同样功... 查看详情

java入土---面向对象(oop)(代码片段)

面向对象(OOP)面向对象的本质是以类的方式组织代码,以对象的组织(封装)数据。面向对象有三大特征:封装,继承,多态。对象与类的关系类是抽象的数据类型,是对某一事物的整体描述。对象是抽象概念的具体实例,例... 查看详情

java第五章:面向对象(oop)

对象:具有特征和功能的实例。类:是对对象的抽象,是人们脑海中的概念,是具有共同特征或相同行为的对象的集合,利用类可以创建对象;创建类:[修饰符]class类名{                创建对象:类名对象... 查看详情

面向对象编程(oop)

面向对象编程(OOP)Java是一个支持并发、基于类和面向对象的计算机编程语言。下面列出了面向对象软件开发的优点:代码开发模块化,更易维护和修改。代码复用。增强代码的可靠性和灵活性。增加代码的可理解性。面向对... 查看详情

java面试提问:啥是oop?

我知道OOP是面向对象编程,面向对象主要有抽象,封装,继承和多态,按照书上对几个特征的定义回答,总觉得不太好,不口语化,问了什么是OOP之后,又问比如做一个人事管理系统,应该怎样去思考其中的OOP概念性的东西可能大家都知道啊... 查看详情

java核心技术笔记五oop

java的核心就是面向对象(完全面向对象的)面向对象程序设计就必须清楚对象的三个主要特性1.对象的行为2.对象的状态3.对象标识 除此之外还需要了解对象之间的关系比较常见的关系有依赖继承聚合 在Java程序中程序员... 查看详情

java第五章:面向对象(oop)

方法重写/覆写(Override)特点:1一般发生在父子类间,子类重写父类中的方法,方法的返回值类型,方法名,形参列表都要与父类一样,子类权限修饰符>=父类的权限修饰符2.一旦重写了父类的方法,子类创建对象后,调用子... 查看详情

8--oop

oop-Python面向对象Python的面向对象面向对象编程基础共有私有继承组合,Mixin魔法函数魔法函数概述构造类魔法函数运算类魔法函数1.面向对象概述(ObjectOriented,00)OOP思想几个名词OO:面向对象OOA:面向对象的分析OOD:面向对象的... 查看详情

c#003.面向对象oop(代码片段)

文章目录面向对象OOP屏蔽(隐藏)new和base继承和扩展new对象初始化反射创建实例dynamic编程面向对象OOP屏蔽(隐藏)new和base派生类不能删除成员、但可以屏蔽成员屏蔽就是不使用父类的成员有点类似java的supernew关... 查看详情

c#003.面向对象oop(代码片段)

文章目录面向对象OOP屏蔽(隐藏)new和base继承和扩展new对象初始化反射创建实例dynamic编程面向对象OOP屏蔽(隐藏)new和base派生类不能删除成员、但可以屏蔽成员屏蔽就是不使用父类的成员有点类似java的supernew关... 查看详情

oop总结

学过JAVA的都知道面向对象是它的一大特点,一直没好好总结过,今天来好好捋一捋。以面向过程来对比,面向对象和面向过程区别在于实现方式,面向过程是把问题的实现分解为一个个的小步骤,然后用函数实现后依次调用。... 查看详情

javascript精粹基础进阶oop面向对象编程(上)

...原文连接http://blog.huanghanlian.com/article/5b698f14b8ea642ea9213f50面向对象编程,oop并不是针对与javascript,很多语言都实现了oop这样一个编程发法论,比如说java,c++,都是实现了oop的语言。概念与继承概念面向对象程序设计(Object-orientedpr... 查看详情

面向对象编程(objectorientedprogramming,oop)

...言都支持类和对象,所以使用这些语言编写程序也被称为面向对象编程,这些语言也 查看详情

java第五章:面向对象(oop)之三大特性

封装(encapsolution)程序设计要追求"高内聚,低耦合":高内聚就是类的内部数据操作细节自己完成,不允许外界干预;低耦合就是:仅暴露少量的方法给外界使用;广义的封装就像包装;权限修饰符:public,protected,默认(什么都不... 查看详情

java小白训练营day06-oop:面向对象+封装+继承+多态(代码片段)

文章目录面向对象面向过程和面向对象的区别?案例:把大象装入冰箱案例:我周日去超市买葡萄、水饺面向对象的三大特征封装encapsulationjava语言中如何体现封装继承inheritancejava有两种继承方式继承的语法没有继承... 查看详情

面向对象oop

[面向对象编程OOP] 1语言的分类面向机器:汇编语言面向过程:c语言面向对象:c++JavaPHP等 2面向过程与面向对象面向过程:专注于如何去解决一个问题的过程,编程特点是一个函数去实现过程操作,没有类与对象的概念面... 查看详情

面向对象(oop)(代码片段)

学习线路初学:熟悉语法进阶:1、23种设计模式2、6中开发原则高级:1、优化2、架构3、安全概念类:一类具有相同特性的事物的抽象描述,用一个java类表示。成员变量:抽取的属性。方法:抽取的行为。对象:是类的实体。(... 查看详情