IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 有C/C++基础的Java学习 -> 正文阅读

[C++知识库]有C/C++基础的Java学习

Java学习的第二天:

/包的创建/

我的理解是跟C++头文件的创建差不多,可以看这个视频https://www.bilibili.com/video/BV1h64y1i78N?p=81&share_source=copy_web

3.2.4 对象的封装:

类的封装是指,在定义一个类时将类中的属性进行私有化,即使用private关键字进行 修饰,私有化属性只能在当前所在类中被访问,如果外界想要访问私有属性,需要提供一些 public修饰的公共方法,其中包括用于获取属性值的 getter方法和设置属性值的setter 方法。

代码如下

package com.itheima.example02;

public class Car {
    private String color;             //将color属性私有化
    private int num;                  //将num属性私有化
    public String getColor(){
        return color;
    }
    public void setColor(String color){
        this.color=color;            //this我这里理解是跟C++里的this指针差不多,后续会有讲解
    }
    public int getNum(){
        return num;
    }
    public void setNum(int carNum){
        if(carNum!=4)
        {
            System.out.println("输入轮胎数量不对");
        } else {
            num = carNum;           //给属性赋值
        }
    }
    public void run(){
        System.out.println("该车的颜色是:"+color+",该车轮胎数量是:"+num);
    }

}

/*******************************************************************************************/
    package com.itheima.example02;

public class example02 {
    public static void main(String[] args){
        Car c=new Car();
        c.setColor("red");
        c.setNum(-1);
        c.run();
    }
}

运行结果: 在这里插入图片描述

3.3 构造方法

3.3.1 构造方法的定义

在实例化对象赋值时,不仅可以通过setter方法完成,还可以通过构造方法完成。所谓 的构造方法是类的一个特殊成员,它会在类实例化对象时被自动调用。在定义构造方法时, 必须同时满足以下三个条件。

(1)方法的名称和类名必须相同。

(2)在方法名称前没有返回值类型的声明。

(3)在方法体中不可以使用return语句返回一个值,但允许单独写return语句作为方法的结束。

无参构造:

package com.itheima.example03;

public class Car {
    public Car() {
        System.out.println("无参构造执行了。。。。");
    }
}

/************************************************分割线******************************************************/
    
package com.itheima.example03;

public class example03 {
    public static void main(String[] args){
        Car c=new Car();
    }
}

有参构造:

package com.itheima.example03;

public class Car {
    String color;
    public Car(String c) {
        color=c;
    }
        public void run() {
            System.out.println("该车的颜色是"+color);
    }
}
/************************************************分割线******************************************************/
package com.itheima.example03;

public class example03 {
    public static void main(String[] args){
        Car c=new Car("red");
        c.run();
    }
}

3.3.2 构造方法的重载

构造方法与普通方法一样也可以实现重载,由于构造方法的方法名与类名相同,因此***只要每个构造方法的参数类型和参数个数不同即可实现构造方法的重载***。在创建实例对象 时,可以通过调用不同的构造方法为不同的属性进行赋值。

这里不做代码演示了(偷懒)

在这里插入图片描述

3.4 this关键字

在3.3.2节的案例中,成员变量使用的是num,构造方法使用的是c_num,这样类似的变量一旦增多,则可读性会变得很差,这时需要在一个类中使用统一的变量名称表示年龄。 为了解决这样的问题,Java中提供了一个this关键字表示当前对象,可以在方法中调用其 他的成员。

1.通过this关键字可以明确地访问一个类的成员变量,解决与局部变量名称相同的问题。

2.通过this关键字调用成员方法


此处的this关键字 可以省略不写,写成this.show()和show(),效果一样

3.可以在一个构造方法中使用“this([参数1,参数2…])”的形式调用其他构造方法。

在这里插入图片描述

需要注意的是,使用this关键字调用其他构造方法时只能出现在构造方法中, 并且只能位于构造方法的第一行且只能出现一次。另外,不能在两个构造方法中使用this 相互调用,否则会出现编译错误

3.5 static关键字

3.5.1 静态变量

通过前面的学习读者已经了解,如果使用一个类,则会在产生实例化对象时分别在堆内存中分配空间,在堆内存中要保存对象中的属性,每个对象都有自己的属性,如果有些属性希望被所有对象共享,就必须使用static关键字修饰成员变量,该变量被称为静态变量,可以直接使用“类名 变量名”的形式调用。

package com.itheima.example04;

public class Car {
    static String CarName="大众";
}

/************************************************************************************************/

package com.itheima.example04;

public class example04 {
    public static void main(String[] agrs){
        Car car=new Car();
        System.out.println("该辆车的厂商是:"+Car.CarName);
        System.out.println("该辆车的厂商是:"+car.CarName);
    }
}

static关键字只能用于修饰成员变量,不能用于修饰局部变量,否则编译会报错

3.5.2 静态方法

通过前面的讲解可知,要想调用某个方法,必须要创建一个对象,那么我们的头脑中一定会有这样一个疑问:有没有一种方法可以不创建对象就能直接调用呢? 实际上有一种方法可以这样操作,那就是静态方法,静态方法与普通方法的区别是在方法前面加一个static关键字,这种方法称为静态方法。

package com.itheima.example04;

public class Car {
    public static  void run(){
        System.out.println("run()静态方法被执行了");  //静态方法
    }
}
/*************************************************************************************************/

package com.itheima.example04;
public class example04 {
    public static void main(String[] agrs){

        Car.run();              //1.类名.方法 的方式调用静态方法
        Car car=new Car();
        car.run();              //2.实例化对象的方式调用静态方法
    }
}

在一个静态方法中只能访问用static修饰的成员,原因在于没有被static修饰的成员需要先创建对象才能访问,而静态方法在被调用时不需要创建任何对象。

3.5.3 静态代码块

在Java类中,使用一对大括号包围起来的若干行代码被称为一个代码块,用static关键字修饰的代码块称为静态代码块。当类被加载时,静态代码块会被执行,由于类只加载一次,所以静态代码块只会执行一次。在程序中,通常会使用静态代码块对类的成员变量进行初始化。

在这里插入图片描述

3.6 类的继承

3.6.1 继承的概念

就是子类父类的关系, 懂吧?

在程序代码中,如果想定义一个类继承另一个类,需要使用extends关键字。如果一个 类没有使用extends关键字明确标识继承另一个类,那么这个类就是默认继承 Object类。 Object类是所有类的父类,该类中的方法适用于其所有子类,其类中常用的方法有toString() 和hashCode()方法等。

**注意:**在类的继承中,需要注意以下几个问题。

(1)在Java中**,类只支持单继承,不允许多重继承,也就是说一个类只能有一个直接父类**。例如 Cow 类继承 Animal类之后,就不允许继承其他类。

(2)多个类可以继承一个父类,例如 Cow 和Sheep类都可以继承Animal类。

(3)在Java中,多层继承是允许的,即一个类的父类可以再继承其他的父类,例 如 Zebra类继承自 Horse类,而 Horse类又可以继承 Animal类,即“子孙三代”。

3.6.2重写父类方法

注意,在子类中重写的方法必须与父类被重写的方法具有相同的方法名、参数列表以及返回值类型

今天就先到这里吧。

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-10-27 12:39:41  更:2021-10-27 12:41:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 5:23:58-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码