从c++到Java,关于Java面向对象基础的学习(二)

简介: 继续补充完成java面向基础对象学习的第二部分,本章内容主要包括构造器和this以及javabean和封装等思想,感觉仍然需要更多练习才能帮助熟练java面向对象基础部分

继续补充完成java面向基础对象学习的第二部分,本章内容主要包括构造器和this以及javabean和封装等思想,感觉仍然需要更多练习才能帮助熟练java面向对象基础部分


目录


一、构造器

构造器的作用

构造器的定义格式  

初始化对象的格式

构造器的分类

注意事项

编辑

具体案例


二、this关键字

this关键字

this在成员方法中的用法


三、封装

封装的实现步骤

Javabean综合案例(猫眼电影系统)



一、构造器

构造器的作用

 用于初始化一个类的对象,并返回对象的地址

Car c = new Car ();

构造器的定义格式  

修饰符 类名 ( 形参列表 ){

...

}

public class Car {


...

// 无参数构造器

public Car (){

...

}

// 有参数构造器

public Car ( String n, String b){

...

}

}

初始化对象的格式

类型 变量名称 = new 构造器;

Car c = new Car ();


构造器的分类

类型 变量名称 = new 构造器;

(1)无参数构造器(默认存在的):初始化的对象时,成员变量的数据均采用默认值。

(2)有参数构造器:在初始化对象的时候,同时可以为对象进行赋值。

注意事项

任何类定义出来,默认就自带了无参数构造器,写不写都有。

 一旦定义了有参数构造器,无参数构造器就没有了,此时就需要自己写一个无参数构造器了。

image.png

具体案例

调用无参数构造器

image.png

调用有参数构造器

image.png

二、this关键字

this关键字是什么

代表当前对象的地址

image.png

上图中this表示与 c 的地址一样,都指向new Car(), 如果调用了c.run(),那么run里面的c也指向new Car()


this关键字

作用:出现在成员方法、构造器中代表当前对象的地址,用于访问当前对象的成员变量、成员方法

在写代码的时候如果用以下的代码去写往往是被诟病的,因为n,和p没有实际意义,

public class Car {
   String name;
   double price;
   public Car(String n , double b){
   name = n;
   price = b;
  } 
}

如果用了this关键字就可以正确的表示,表示为上面第一个String name里面的name赋值和double price 里面的price赋值

public class Car {
    String name;
    double price;
    public Car(String name , double price){
    this.name = name;
    this.price = price; 
    } 
}

样例

image.png

this在成员方法中的用法

错误的表示

public class Car {
   String name ;
   double price ;
   public void goWith ( String name){
   System . out .println(name + " 正在和 " + name + " 一起比赛!! " );
   }
}

image.png

正确的表示

public class Car {
    String name ;
    double price ;
    public void goWith ( String name){
    System . out .println( this .name + " 正在和 " + name + " 一起比赛!! " );
    }
}

例子

image.png

三、封装

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

什么是封装? 隐藏实现细节,暴露出合适的访问方式。( 合理隐藏、合理暴露0 )

封装的原则: 对象代表什么,就得到对应的数据并提供数据对应的行为

封装的实现步骤

一般对成员变量使用private(私有)关键字修饰进行隐藏,private修饰后该成员变量就只能在当前类中访问。


提供public修饰的公开的getter、setter方法暴露其取值和赋值。


在赋值给一个学生年龄的例子中非常容易出现,入过学生的年龄错误了,为负数,仍然会继续输入,那么该如何修改呢,这是就需要封装,通过一定暴露和封装完成

image.png

Javabean综合案例(猫眼电影系统)

测试案例 对象

package movieDemo;
public class Test {
    public static void main(String[] args) {
        //1、设计电影类
        //2、创建三个电影对象,分装电影信息
        //3、定义一个电影类型数组,存储电影的对象
        Movie[] movies = new Movie[3];
        movies[0] = new Movie("长津湖",9.7,"吴京");
        movies[1] =new Movie("我和我的父辈",9.6,"吴京");
        movies[2] = new Movie("五个扑水的少年",9.5,"王川");
        //4、遍历数组中每个对象
        for(int i = 0;i < movies.length;i++) {
            Movie m = movies[i];
            System.out.println("电影名:" + m.getName());
            System.out.println("得分:" + m.getScore());
            System.out.println("主演:" + m.getActor());
            System.out.println("-------------------");
        }
    }
}

package movieDemo;
import javax.swing.*;
public class Movie {
    //1、成员变量
    private  String name;
    private  double score;
    private  String actor;
    //创建无参数构造器
    public Movie() {
    }
    //创建有参数构造器
    public Movie(String name, double score, String actor) {
        this.name = name;
        this.score = score;
        this.actor = actor;
    }
    // 2、getter +setter
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public double getScore() {
        return score;
    }
    public void setScore(double score) {
        this.score = score;
    }
    public String getActor() {
        return actor;
    }
    public void setActor(String actor) {
        this.actor = actor;
    }
}
相关文章
|
19天前
|
算法 网络安全 区块链
2023/11/10学习记录-C/C++对称分组加密DES
本文介绍了对称分组加密的常见算法(如DES、3DES、AES和国密SM4)及其应用场景,包括文件和视频加密、比特币私钥加密、消息和配置项加密及SSL通信加密。文章还详细展示了如何使用异或实现一个简易的对称加密算法,并通过示例代码演示了DES算法在ECB和CBC模式下的加密和解密过程,以及如何封装DES实现CBC和ECB的PKCS7Padding分块填充。
43 4
2023/11/10学习记录-C/C++对称分组加密DES
|
3月前
|
XML Java 编译器
Java学习十六—掌握注解:让编程更简单
Java 注解(Annotation)是一种特殊的语法结构,可以在代码中嵌入元数据。它们不直接影响代码的运行,但可以通过工具和框架提供额外的信息,帮助在编译、部署或运行时进行处理。
106 43
Java学习十六—掌握注解:让编程更简单
|
1月前
|
Java Android开发 C++
Java和C++
Java和C++
43 15
|
1月前
|
Java
java中面向过程和面向对象区别?
java中面向过程和面向对象区别?
25 1
|
2月前
|
JavaScript 前端开发 Java
还不明白面向对象? 本文带你彻底搞懂面向对象的三大特征(2024年11月Java版)
欢迎来到我的博客,我是瑞雨溪,一名热爱JavaScript和Vue的大一学生。如果你从我的文章中受益,欢迎关注我,我将持续更新更多优质内容。你的支持是我前进的动力!🎉🎉🎉
26 0
还不明白面向对象? 本文带你彻底搞懂面向对象的三大特征(2024年11月Java版)
|
2月前
|
Java 大数据 API
14天Java基础学习——第1天:Java入门和环境搭建
本文介绍了Java的基础知识,包括Java的简介、历史和应用领域。详细讲解了如何安装JDK并配置环境变量,以及如何使用IntelliJ IDEA创建和运行Java项目。通过示例代码“HelloWorld.java”,展示了从编写到运行的全过程。适合初学者快速入门Java编程。
WK
|
2月前
|
安全 Java 编译器
C++和Java哪个更好用
C++和Java各具优势,选择取决于项目需求、开发者偏好及目标平台特性。C++性能出色,适合游戏、实时系统等;Java平台独立性强,适合跨平台、安全敏感应用。C++提供硬件访问和灵活编程范式,Java有自动内存管理和丰富库支持。两者各有千秋,需根据具体需求选择。
WK
48 1
|
2月前
|
Java 关系型数据库 数据库
面向对象设计原则在Java中的实现与案例分析
【10月更文挑战第25天】本文通过Java语言的具体实现和案例分析,详细介绍了面向对象设计的五大核心原则:单一职责原则、开闭原则、里氏替换原则、接口隔离原则和依赖倒置原则。这些原则帮助开发者构建更加灵活、可维护和可扩展的系统,不仅适用于Java,也适用于其他面向对象编程语言。
45 2
|
3月前
|
IDE Java 程序员
C++ 程序员的 Java 指南
一个 C++ 程序员自己总结的 Java 学习中应该注意的点。
27 5
|
3月前
|
编译器 C语言 C++
配置C++的学习环境
【10月更文挑战第18天】如果想要学习C++语言,那就需要配置必要的环境和相关的软件,才可以帮助自己更好的掌握语法知识。 一、本地环境设置 如果您想要设置 C++ 语言环境,您需要确保电脑上有以下两款可用的软件,文本编辑器和 C++ 编译器。 二、文本编辑器 通过编辑器创建的文件通常称为源文件,源文件包含程序源代码。 C++ 程序的源文件通常使用扩展名 .cpp、.cp 或 .c。 在开始编程之前,请确保您有一个文本编辑器,且有足够的经验来编写一个计算机程序,然后把它保存在一个文件中,编译并执行它。 Visual Studio Code:虽然它是一个通用的文本编辑器,但它有很多插