java面向对象之类与对象

news2024/10/9 1:19:16

目录

1.定义一个类

案例:定义一个学生类

1.代码

2.效果

2.类的实例化与使用

1.代码

2.效果

3.访问控制

1)private

2)default

3)protected

4)public

注:如下图

4.封装一个类

案例:封装一个教师类

1)代码

2)效果

5.定义一个构造方法

1)无参数构造

2)有参数构造

3)注

6.构造方法的重载

案例:快速生成java的构造方法和get,set方法

步骤如下

1)创建一个类编写里面私有属性

2.alt键+insert键

3.全参数构造

4.无参数构造

5.生成get和set方法

7.static关键字

1. 静态变量

2. 静态方法

3. 静态初始化块


1.定义一个类

访问修饰符   class 类的名字{

        属性1;

        属性2;

        方法1;

        方法2;

}

案例:定义一个学生类

public class Student {

    String name;

    int age;
    
    public void study(){
        System.out.println("study");
    }
    public void sleep(){
        System.out.println("sleep");
    }
}

1.代码

package org.xiji.object;

public class Student {
    String name;
    int age;
    
    public void study(){
        System.out.println("study");
    }
    public void sleep(){
        System.out.println("sleep");
    }
}

2.效果

2.类的实例化与使用

类名   变量名  =  new  类名();

//调用属性

变量名.属性

//调用方法

变量名.方法名()

创建一个测试类==》使用类

1.代码

package org.xiji.object;

public class StudentTest {
    public static void main(String[] args)
    {
        //创建一个类
        Student stu = new Student();
        //赋值
        stu.name = "惜.己";
        stu.age = 18;
        //输出
        System.out.println(stu.name);
        System.out.println(stu.age);
        //调用方法
        stu.sleep();
        stu.study();
    }
}

2.效果

3.访问控制

1)private

  1. private:

    • 如果一个成员被声明为 private,那么它只能在其所属的类中被访问。
    • 这种级别的限制意味着这个成员不能被任何其他类(包括子类)所访问
    • private 通常用来隐藏数据,确保封装性
    • 修饰属性和方法


2)default

  1. default (也称为包私有或不使用任何关键字):

    • 当没有指定任何访问修饰符时,默认使用的就是这种访问级别。
    • 默认访问权限下,该成员可以在同一个包内的所有类中被访问
    • 不同包中的类无法访问具有默认访问权限的成员,即使它们是子类也不行。

3)protected

  1. protected:

    • protected 访问修饰符使得成员可以被同一包内的所有类访问,并且也可以被不同包中的子类访问
    • 这提供了比 default 更宽松但比 public 更严格的访问控制。
    • 它允许一定程度的继承性和封装性的结合。

4)public

  1. public:

    • 被声明为 public 的成员可以从任何其他类中被访问,无论这些类位于哪个包内
    • public 提供了最宽泛的访问权限,因此应当谨慎使用,仅当确实需要广泛的可访问性时才应该选择这种修饰符。

注:如下图

base 是一个包  ,object又是一个包.

被default修饰的类访问的范围只在本包

被public修饰的类访问的范围任意包

4.封装一个类

通过private修饰属性,隐藏属性。并且通过public修饰的方法使用this访问本类的私有属性

public class MyPrivate{

        private  数据类型1   数据名1

        private  数据类型2   数据名1

        

        //通过公共方法访问

        public 数据类型1  方法名1(){

                return this.数据名1;

        }

        //通过公共方法访问

        public 数据类型2  方法名2(){

                return this.数据名1;

        }

}

案例:封装一个教师类

1)代码

package org.xiji.object;

public class Teacher {
    
    private String name;
    private int age;
    
    
    public String sleep()
    {
        System.out.println(this.name+"老师睡觉");
        return this.name;
    }
    public int say()
    {
        System.out.println("年龄是:"+this.age);
        return this.age;
    }
}

2)效果

5.定义一个构造方法

1)无参数构造

        无参数构造函数用于创建对象时不需要传递任何参数的情况。如果在一个类中没有显式地定义任何构造函数,那么Java会自动提供一个默认的无参数构造函数。但是,一旦你在类中定义了至少一个构造函数(无论是否有参数),Java就不会再自动生成这个默认构造函数了。

public class MyTwo{

        String name;

       //无参数构造

        MyTwo(){

        

        }

        

        

}

2)有参数构造

        有参数构造函数允许在创建对象的同时传入一些初始数据。这对于给对象的状态变量赋初值非常有用。

public class MyTwo{

        String name;

        //有参数构造

        MyTwo(String name){

               this.name = name;

        }

        

}

3)注

无论是有参数还是无参数构造方法名必须和类名一致

6.构造方法的重载

        构造方法的重载是指在一个类中定义多个构造方法,这些构造方法具有相同的名称(即类名),但参数列表不同。这样可以根据不同的初始化需求来创建对象。构造方法重载允许你在创建对象时提供灵活的初始化方式。

在Java中,可以通过以下几种方式实现构造方法的重载:

  1. 不同的参数数量:构造方法可以有不同的参数数量。
  2. 不同的参数类型:即使参数数量相同,只要参数类型不同,也可以构成重载。
  3. 不同的参数顺序:如果参数的数量和类型都相同,但参数的顺序不同,这也可以构成重载。
package org.xiji.object;

public class MyTwo {
    
    String name;

    //无参数构造
    public MyTwo() {
    }

    //有参数构造
    public MyTwo(String name) {
        this.name = name;
    }
}

案例:快速生成java的构造方法和get,set方法

步骤如下

1)创建一个类编写里面私有属性

2.alt键+insert键

3.全参数构造

4.无参数构造

如下图操作

5.生成get和set方法

可以看到已经生成了

7.static关键字

1. 静态变量

        静态变量也称为类变量,它们是所有对象共享的数据成员。一旦值被改变,所有引用这个静态变量的地方都会看到这个改变。

public class Example {
    public static int count = 0; // 静态变量

    public Example() {
        count++; // 每次创建一个新的Example对象时,count加1
    }

    public static void main(String[] args) {
        new Example();
        new Example();
        System.out.println(Example.count); // 输出: 2
    }
}

2. 静态方法

静态方法也称为类方法,它们可以通过类名直接调用,而不需要创建类的实例。静态方法通常用来执行与类相关但不依赖于特定实例的操作。

public class MathUtils {
    // 静态方法
    public static int max(int a, int b) {
        return (a > b) ? a : b;
    }

    public static void main(String[] args) {
        int result = MathUtils.max(10, 20); // 直接通过类名调用静态方法
        System.out.println("Max is: " + result); // 输出: Max is: 20
    }
}

3. 静态初始化块

静态初始化块是在类加载时执行一次的代码块,用于对静态变量进行初始化操作。

public class StaticInitializer {
    public static int value;

    static { // 静态初始化块
        value = 42;
        System.out.println("Static block initialized.");
    }

    public static void main(String[] args) {
        System.out.println(StaticInitializer.value); // 输出: 42
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2197666.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Java 问题】基础——反射

接上文 反射 49.什么是反射?应用?原理? 49.什么是反射?应用?原理? 什么是反射? 我们通常都是利用 new 方式来创建对象实例,这可以说就是一种“正射”,这种方式在编译时候…

HJDQN环境配置

git clone仓库代码等不做赘述 #创建,激活conda环境即可 conda create -n EAHJDQN python3.6 conda activate EAHJDQN#安装包 pip install mujoco_py2.0.2.8pip install Cython0.29.21pip install torch1.8.1cu111 torchvision0.9.1cu111 torchaudio0.8.1 -f https:/…

【信息论基础第四讲】信息的流动——平均互信息及其性质

一、平均互信息与互信息 1、互信息 互信息量表示接收到消息yj后,获得关于事件xi的信息量。 2、 从熵的角度来定义平均互信息量: 从信源X熵H(X)到信宿熵H(X|Y)熵减少了,同时为信宿Y提供了信息量,而信息从信源到信宿的变化是流经信…

每日OJ题_牛客_平方数_数学_C++_Java

目录 牛客_平方数_数学 题目解析 C代码1暴力 C代码2数学 Java代码数学 牛客_平方数_数学 平方数 (nowcoder.com) 描述: 牛妹是一个喜欢完全平方数的女孩子。 牛妹每次看到一个数 x,都想求出离 x 最近的完全平方数 y。 每次手算太麻烦,…

分享几个国外SSL证书提供商网站

国外SSL证书提供商 众所周知兼容性高的SSL证书肯定是在国外申请的,主要确保SSL证书的安全性的同时,对于安全标准在国外相比而言更成熟,保护程度也比较高。 另方面对需要申请的域名没有限制,可选性SSL证书类型种类比较多&#xf…

[Python学习日记-39] 闭包是个什么东西?

[Python学习日记-39] 闭包是个什么东西? 简介 闭包现象 闭包意义与作用 简介 在前面讲函数和作用域的时候应该提到过,当函数运行结束后会由 Python 解释器自带的垃圾回收机制回收函数内作用域已经废弃掉的变量,但是在 Python 当中还有一种…

vulnhub靶场之hackableIII

一.环境搭建 1.靶场描述 Focus on general concepts about CTF Difficulty: Medium This works better with VirtualBox rather than VMware. 2.靶场下载 https://download.vulnhub.com/hackable/hackable3.ova 3.靶场启动 二.信息收集 1.寻找靶场真实的Ip nmap -SP 192.168…

LingedList<T>,自定义泛型

LingedList<T>底层采用双向链表数据结构实现的集合(容器)。 数据结构:是计算机在内存中组织数据的一种方式。 分类: 线性数据结构: 数组:存储同类型数据的大小固定的集合。 列表(List):动态大小的数组,可以灵活的添加,删除元素。 链表(LinkedList):分…

目标检测 DN-DETR(2022)

文章目录 前言gt labels 和gt boxes加噪query的构造attention maskIS&#xff08;InStability&#xff09;指标 前言 gt labels 和gt boxes加噪 query的构造 attention mask IS&#xff08;InStability&#xff09;指标

媒界:家庭出行不用愁 江铃集团新能源易至EV3青春版值得拥有

随着家庭代步、接送孩子上下学的需求进一步释放&#xff0c;纯电小车市场迎来火热发展机遇。江铃集团新能源旗下的易至EV3青春版&#xff0c;以其灵动的车身设计、宽敞的内部空间以及先进的智能配置&#xff0c;成为了家庭用车的优质选择。 作为电动汽车和出行普及者&#xff0…

阿里面试: RocketMQ如何实现每秒上十万QPS的超高吞吐量读取的?

这玩意儿表面看上去挺牛逼&#xff0c;但其实背后的逻辑和套路&#xff0c;在咱们开发里见过的那些招数&#xff0c;都能找到影子。 今天小北和大家一起系统化的梳理梳理一遍&#xff0c;让大家功力猛增&#xff0c;吊打面试官。 1. 消息存储&#xff1a;巧妙利用顺序写 先说…

ARTS Week 43

Algorithm 本周的算法题为 1822. 数组元素积的符号 已知函数 signFunc(x) 将会根据 x 的正负返回特定值&#xff1a; 如果 x 是正数&#xff0c;返回 1 。 如果 x 是负数&#xff0c;返回 -1 。 如果 x 是等于 0 &#xff0c;返回 0 。 给你一个整数数组 nums 。令 product 为数…

SimpleFoc以及SVPWM学习补充记录

SimpleFoc SimpleFOC移植STM32&#xff08;一&#xff09;—— 简介 FOC控制的过程是这样的&#xff1a; 对电机三相电流进行采样得到 Ia,Ib,Ic。将 Ia,Ib,Ic 经过Clark变换得到 I_alpha I_beta。将 I_alpha I_beta 经过Park变换得到 Id,Iq。计算 Id,Iq 和其设定值 Id_ref 和…

Spring JDBC - Spring JDBC模版使用

前言 Spring JdbcTemplate是Spring Framework提供的一个强大的数据库访问工具&#xff0c;它简化了数据库操作的过程&#xff0c;为开发者提供了一个高级的数据库访问抽象层。 JdbcTemplate是Spring JDBC模块中的一个核心类&#xff0c;它位于org.springframework.jdbc.core包中…

开源项目都是怎么推广的?

大家好&#xff0c;我是爱折腾的刘大逵。跟我接触过的技术们都知道&#xff0c;一年一年的都在折腾着做一些项目&#xff0c;年年有进步&#xff0c;年年有想法&#xff0c;年年在折腾。今天给大家分享GITEE如何上推荐&#xff01; GITEE推荐有什么用&#xff1f; 众所周知&a…

C++版iwanna2

第二篇目录 程序的流程图程序游玩的效果下一篇博客要说的东西 程序的流程图 #mermaid-svg-lFW0ZjCdi5Xvl3gE {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-lFW0ZjCdi5Xvl3gE .error-icon{fill:#552222;}#mermaid-s…

《神经网络》—— 循环神经网络RNN(Recurrent Neural Network)

文章目录 一、RNN 简单介绍二、RNN 基本结构1.隐藏中的计算2.输出层的计算3.循环 三、RNN 优缺点1.优点2.缺点 一、RNN 简单介绍 循环神经网络&#xff08;Recurrent Neural Network, RNN&#xff09;是一种用于处理序列数据的神经网络架构。 与传统的前馈神经网络&#xff08…

聆听国宝“心声” 《寻找国宝传颂人——中国国宝大会》走进辽宁

热爱不止&#xff0c;传颂不停。近日&#xff0c;中央广播电视总台《寻找国宝传颂人——中国国宝大会》大型融媒体活动在辽宁省博物馆开展第二场地方展演。辽宁省博物馆是新中国成立后的第一座博物馆&#xff0c;馆藏文物近12万件&#xff0c;珍贵文物数万件&#xff0c;且以藏…

计算机网络:数据链路层详解

目录 一、点对点信道&#xff1a; &#xff08;1&#xff09;封装成帧 &#xff08;2&#xff09;透明传输 &#xff08;3&#xff09;差错检测 二、点对点协议 &#xff08;1&#xff09;数据链路层的特点 &#xff08;2&#xff09;PPP协议的组成 &#xff08;3&…

“我养你啊“英语怎么说?别说成I raise you!成人学英语到蓝天广场附近

“我养你啊”这句经典台词出自周星驰自导自演的电影《喜剧之王》。在这部电影中&#xff0c;周星驰饰演的尹天仇对张柏芝饰演的柳飘飘说出了这句深情而动人的台词。这句台词出现在柳飘飘即将离去之时&#xff0c;尹天仇鼓起勇气&#xff0c;用它作为对柳飘飘个人困境的承诺&…