面向对象2

python2和python3面向对象的区别 python 面向对象: node2:/root/python/20200729#cat t5.py # !/usr/bin/env python # -*- coding: utf-8 -*- class player(): ##定义一个类 def print_role(self): ##定义一个实例方法 return 'aaaaaaaa' print(type(player)) print(dir(player)) user1=player() ##类的实例化 print. 阅读详情

一,this关键字

1.this关键字代表当前正在被操作的对象

   使用this关键字明确告诉程序,调用的是当前对象中的成员变量

   这样就可以在方法中区分成员变量和局部变量

2.this关键字调用当前当前对象中的成员方法

3.使用this关键字,在一个构造方法中调用另一个构造方法

package Day4;

public class Cat {
    String name;
    int age;
    public  Cat(){
        this("jh",20);
    }
    //在Cat()构造方法中使用this调用另一个含参构造方法
    public Cat(String name,int age){
        this.name = name;
        this.age = age;
    }
    //在含参构造方法中使用this调用当前成员变量
    public void eat(){
        this.drink();
        System.out.println(name+"吃东西");
    }
    //使用this调用成员方法
    public void drink(){
        System.out.println(name+"喝东西");
    }
    public void showinfo(){
        System.out.println("姓名:"+this.name);
        System.out.println("年龄:"+this.age);
    }
}

二.static关键字

static: 被称为静态,可以用来修饰成员变量,成员方法,代码块,内部类

static修饰的成员在内存中只有一份(与类一样,只有一份)

特点:随着类的加载而加载,只要类被加载,静态成员就可以使用

          优先于对象存在

          修饰的成员被所有对象所共享

          可不创建对象,直接使用类名调用

使用static修饰的成员方法就是静态方法

注:静态方法中只能调用静态成员

       非静态方法中可以调用静态成员

package Day4.StaticDemo;

public class Student {
    String name;
    long num;
    static String spe = "人工智能";
    int grade;

    public static void showSpe(){
        System.out.println("专业:"+spe);
       /* System.out.println(this.num);
        因为调用的num并不是静态变量所以此处会出错
       */

    }
    public void showinfo(){
        System.out.println("姓名:"+name);
        System.out.println("学号:"+num);
        Student.showSpe();
        /*
        此处非静态成员可以调用静态成员
        
         */
    }
}

三,代码块

定义:没有名称的方法

分类

1.实例代码块:

没有使用static修饰的,每次创建对象时被自动调用一次

2.静态代码块:

使用static修饰的,在类首次被加载时被调用执行,只执行一次,后续调用类时不会执行

注:静态代码块优先于实例代码块执行

package Day4.Code;

public class Demo {
    static int a = 5;
    {
        System.out.println("实例代码块1");
    }
    {
        System.out.println("实例代码块2");
    }
    static {
        System.out.println("静态代码块1");
    }
    static {
        System.out.println("静态代码块2");
    }
}
package Day4.Code;

public class Test {

    public static void main(String[] args) {
        new Demo();
        //没次类的加载都会先运行静态代码块,在运行实例代码块,最后再运行本身的程序
        //静态代码块只会在第一次类的加载时进行执行
        //实例代码块每次生成对象时都会执行一遍
        System.out.println(Demo.a);
        Demo.a =5;

        Demo.a = 6;
        System.out.println(Demo.a);

        new Demo();
    }
}

四,包(package)

包:用来管理类的

具体体现:

按照功能模块管理类

把同一功能的类放在一个包中

控制访问权限

避免重名类

包的命名规则:一般使用小写,用.区分包的级别

关键词:import

import:使用import关键字导入其他包中的类

eg:java.util.scanner--->全类名=包名(地址)+类名(类的简称)

注:java.lang包中的类比较特殊,使用时不需要导入

五,访问权限修饰符

1,public:公共权限

可以在项目中的任何位置都可以访问到

可以修饰类,成员变量,成员方法,内部类

2,protected:受保护权限

可以在本类,同包中的其他类,不同包的子类中访问到

可以修饰成员变量,成员方法,内部类

3,(空)/(default):默认权限

可以在本类,同包中的其他类中访问到

可以修饰类,成员变量,成员方法,内部类

4,private:私有权限

只能在本类中访问到

可以修饰成员变量,成员方法,内部类

注:在本类中所有权限都可以被访问到

六,封装

理解封装一词在编程中的两种含义

1,封装——包装:

将一段重复使用的代码包装到一个方法中,称为包装

2,面向对象语言中的封装

使用不同的访问权限修饰符,控制类中的成员是否可以对外可见

面向对象语言封装:

将类中的某些信息隐藏在类的内部,不让外界知道,或不让外界直接访问,可以提供专门的公共的方法进行访问

问题:name,age,等可以在类的外部进行操作,但在外部进行赋值时,所在类没有办法对所赋的值进行控制,或不好控制

解决方法:

可以使用私有权限private将name和age隐藏起来,将其定义为私有成员变量

然后提供公开的方法进行访问

package fengzhuang.Study1;

public class Person {


    private String name;
    private int age;
    /*
    使用私有权限访问符将name和age定义为私有成员变量
    然后使用getname,setname,getage,setage等公共方法被对象使用
     */


    public void Setname(String name){
        if (name.length()>=2&&name.length()<=6){
            this.name = name ;
        }
    }

    public void SetAge(int age){
        if (age>=0&&age<=120){
            this.age = age;
        }
    }
    //对成员变量进行隐藏起来,提供公共方法进行访问

    public String GetName(){
        return this.name;
    }

    public int GetAge(){
        return this.age;
    }
    //获取所赋的成员变量

    public void eat(){
        System.out.println(this.name+"吃东西");
        drink();
    }

    private void drink(){
        System.out.println(this.name+"喝水");
    }



}

别再为下载速度发愁了!手把手教你给qBittorrent/Transmission添加最新可用Tracker(附2024年实测地址清单) 本文提供2024年BT下载加速实战指南,详细解析Tracker工作原理与速度瓶颈,手把手教你为qBittorrent/Transmission添加最新可用Tracker,并附实测地址清单。通过优化配置和精选Tracker列表,显著提升下载速度和稳定性,解决连接延迟和peer数量限制问题。 阅读详情

相关推荐

PADS安装教程(超详细)

声明:个人实践 一、工具准备 pads9.5完整破解版百度网盘提取码【wjx9】 链接:https://pan.baidu.com/s/1pIP6BJO435ssmF7Hjwyz8A 提取码:wjx9 安装环境:win10 64位 二、开始解压安装 关闭杀毒,exe以管理员身份运行 点击【skip】,不然又得licese 点击【agree】 点击【modify】 设置安装的工具、路径及工程路径 设置完成后,开始【install】 在之后注册。 将Crack复制到PADS安装目录

qq_42057393的博客 5万+

UML2面向对象分析与设计期末复习知识点

UML2期末复习总结-----看完不过!你找我!(( ‵o′)) PS:只是知识点总结,还是要看书的。 PS:未经作者允许,严禁转载。违者后果自负。 撰写人:Echo 时间:2020年12月29日16:28:09 UML2分值分布 选择题:10个---------------------------20分 填空题:20个---------------------------20分 简答题:5个-----------------------------30分 应用题:3个-------------------

SlientJkoer的博客 1万+

PrimeTime生成.lib竟暗藏PG添加Bug

1. 确认原始库中是否包含PG引脚的定义。2. 查阅PrimeTime的write_lib命令文档,寻找相关选项。3. 在生成库时使用正确的选项,例如-include_pg_pins或类似参数。4. 验证生成的.lib文件是否包含pg_pin部分。

limanjihe的专栏 1920

Laravel和Yii2的面向对象一共有哪些区别?

【代码】Laravel和Yii2的面向对象一共有哪些区别?

长风破浪会有时的博客 918

SPSS实战:5步搞定多指标联合诊断的ROC曲线分析(附Logistic回归教程)

本文详细介绍了如何使用SPSS软件进行多指标联合诊断的ROC曲线分析。通过5个实战步骤,从数据准备、二元Logistic回归建模生成综合预测概率,到绘制并比较单指标与联合模型的ROC曲线,帮助临床研究者有效整合多个诊断指标,提升模型判别能力(AUC),实现诊断效能的优化。

mqtt6iot的博客 1422

VMware + ubuntu20.04 + qemu安装

遇到报错可参考:(从ubuntu裸系统开始安装)

NosONE 3230

ros2笔记-2.5.1 面向对象编程

使用面向对象方式编写ROS2节点,有python\c++ 版本

bohu83的博客 831

如何创建属于自己的大语言模型:从零开始的指南

随着人工智能的快速发展,大语言模型(LLM)在各种场景中表现出了卓越的能力,例如文本生成、对话交互和内容总结等。本文将带你了解创建 LLM 的核心步骤,从理论到实践,让你拥有一个自己的智能助手。

赵大仁的博客 3280

面向对象分析与设计UML2.0资源文件下载:全面掌握面向对象技术的宝库

面向对象分析与设计UML2.0资源文件下载:全面掌握面向对象技术的宝库 去发现同类优质开源项目:https://gitcode.com/ 面向对象分析与设计UML2.0资源文件下载是一个为软件开发者提供丰富知识资源的开源项目。本文将详细介绍该项目的核心功能、技术分析、应用场景以及项目特点,帮助您更好地理解和利用这一宝贵资源。 项目介绍 面向对象分析与设计UML2.0资源文件下载项目,为您精心准备了...

gitblog_06781的博客 1041

智能座舱测试工程师必看:从零搭建自动化测试框架的5个实战技巧

本文为智能座舱测试工程师提供从零搭建自动化测试框架的5个实战技巧,涵盖环境搭建、ADB高级应用、Python脚本工程化、Monkey测试优化及性能调优。通过ADB深度操作和Python脚本封装,帮助测试人员构建高可复用的智能座舱测试解决方案,显著提升测试效率与问题发现率。

python9snake的博客 634

【模拟IC】从VCD到VEC:Cadence数模混合仿真中高效激励转换与HSIM工具链实战

本文详细解析了在Cadence数模混合仿真中,如何利用HSIM工具链的vcd2vec命令,将数字仿真生成的VCD文件高效转换为模拟仿真器所需的VEC格式激励文件。文章提供了从VCD文件预处理、io_top.sig文件编写、核心命令参数详解到Cadence ADE环境集成验证的全链路实战指南,并分享了自动化脚本方案,旨在解决数模混合验证中的“语言不通”难题,提升仿真效率。

k9l0m1的博客 122

legend2---17、legend2里面怎么面向对象

legend2---17、legend2里面怎么面向对象 一、总结 一句话总结: mvc本身挺优:本身mvc的开发模式,就算是面向过程下也还行,如果面向对象那就更加棒了 实体类无需属性:由于php的生命周期,建议面向对象的话,控制器中实体类里面无需属性,直接在Model里面操作数据库即可 看别人项目里面的面向对象:其它的等你 看了别人项目的 php 源码你就知道怎么做了 ...

weixin_33998125的博客 93

Matlab并行运算

今天搞了一下matlab的并行计算,效果好的出乎我的意料。 本来CPU就是双核,不过以前一直注重算法,没注意并行计算的问题。今天为了在8核的dell服务器上跑程序才专门看了一下。本身写的程序就很容易实现并行化,因为beamline之间并没有考虑相互作用。等于可以拆成n个线程并行,要是有550核的话,估计1ms就算完了。。。 先转下网上找到的资料。 一、Matlab并行计算原理梗概 Matl

wenyusuran的专栏 1万+

【ROS2机器人入门到实战】使用面向对象方式编写ROS2节点

把节点写成一个类的形式对我们组织代码和使用ROS2的新特性有很多的好处,后面我们将以此种方式(用类建立节点)来学习后续内容。

生活不止眼前的苟且 6294

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Laravel和Yii2的面向对象的算法一共有哪些区别?

【代码】Laravel和Yii2的面向对象的算法一共有哪些区别?

长风破浪会有时的博客 924

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

ROS2学习(五)面向对象编程

面向对象编程是一种将数据和操作封装为对象的编程范式。本文通过Python和C++示例展示了其核心概念:类、对象、属性和方法。Python示例演示了类的定义、继承和方法重写,C++示例则展示了ROS2环境下的类实现。两种语言都体现了面向对象的三大特性:封装、继承和多态。Python代码更简洁,适合快速原型开发;C++代码则更接近底层,适用于性能敏感场景。两种实现方式都完成了相同功能,展示了面向对象编程在不同语言中的应用。

weixin_71683006的博客 356

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Python2 和Python3 面向对象区别

本文主要介绍Python中,Python2和Python3面向对象中的类的区别、继承等区别,以及相关的示例代码。 原文地址:Python2 和Python3 面向对象区别

亮亮的专栏 179

ThinkPHP 3.2 与 面向对象编程

仅仅是个人看法,感觉后端人员不应该思考过多的业务逻辑处理顺序,而是写好接口,供前端调用。

TROUBLE I AM IN 1332

2分钟明白什么是面向对象编程

@2分钟明白什么是面向对象编程 面向对象编程 某百科称为其解释为:面向对象程序设计(Object Oriented Programming)作为一种新方法,其本质是以建立模型体现出来的抽象思维过程和面向对象的方法。模型是用来反映现实世界中事物特征的。任何一个模型都不可能反映客观事物的一切具体特征,只能对事物特征和变化规律的一种抽象,且在它所涉及的范围内更普遍、更集中、更深刻地描述客体的特征。通过建立模型而达到的抽象是人们对客体认识的深化。 面向对象,面向过程 面向过程(Procedure Oriented

weixin_48746746的博客 6852

JavaScript面向对象编程指南(第2版).pdf 免费下载

下载地址: JavaScript面向对象编程指南(第2版).pdf

baidu_41803984的博客 488

关于ROS2面向对象的理解

《动手学ROS2》3.5.3OOP介绍_ros是面向对象还是面向过程-优快云博客

liu3332456755的博客 213

ExtJs2.0 面向对象的编程方法

 前言       在以往的js编程中,大家都会以面向对象的方式编写js代码。那是因为以前js在web应用中只扮演着一个小角色。没有人在乎它其主要的原因在于它只是一个轻量级的脚本语言,只能在页面上添加一些特效。     但是已经步入web2.0 的如今来说,js由一个跑龙套的迅速的变为当红的明星。其主要的原因在于Ajax的出现。但是最初给程序员带来最大的苦恼就是浏览器的兼容问题。随后很多的

louis75168611的技术空间 1016

2、什么是面向对象

什么是面向对象 面向对象、面向过程 面向对象的三大基本特征和五大基本原则 面向过程:一步步的实现问题,是一个具体化,实现化的概念 面向对象:是模型化的抽象出来的一个概念,实际上底层还是面向过程的一个实现 举个例子: 1、张三想要一件短袖,需要先买一块布,买一个剪子和针线,自己一步步做成衣服。这就是面向过程 2、李四同样想要一件短袖,...

sh1747665463的博客 291

面向对象分析与设计UML2.0资源文件下载

面向对象分析与设计UML2.0资源文件下载 去发现同类优质开源项目:https://gitcode.com/ 此仓库提供了一本关于面向对象分析与设计的PDF书籍——《面向对象分析与设计UML2.0》。以下是该资源文件的详细介绍: 本书详细介绍了面向对象的分析与设计,全面探讨了面向对象概念、软件开发过程、UML(统一建模语言)和多层技术。内容涵盖从面向对象软件项目的基本概念,到基于广泛使用的方法进行...

gitblog_06780的博客 373

【免费下载】 面向对象分析与设计(UML2.0版)(PDF) 资源下载

面向对象分析与设计(UML2.0版)(PDF) 资源下载 【下载地址】面向对象分析与设计UML2.0版PDF资源下载 本仓库提供了一份名为《面向对象分析与设计(UML2.0版)(PDF)》的资源文件下载。该文件详细介绍了面向对象分析与设计的基本概念、方法和实践,并结合UML 2.0标准进行深入讲解。无论你是初学者还是有一...

gitblog_09732的博客 1896
上一篇: 面向对象1
下一篇: 面向对象3
sql12345678911
博客等级 码龄2年 190粉丝 34原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值