首页 > 其他分享 >第三章 面向对象(上)

第三章 面向对象(上)

时间:2024-10-13 22:51:06浏览次数:3  
标签:调用 第三章 构造方法 对象 面向对象 方法 public 属性

1、面向过程

面向过程 就是分析解决问题所需要的步骤,然后用函数把这些步骤逐一实现,使用的时候依次调用就可以了。面向对象具有的三个特性:封装性、继承性和多态性。

封装性:封装是面向对象的核心思想。一层含义是指把对象的属性和行为看作是一个密不可分的整体,将这两者封装在一起(即封装在对象中);另一层是指 “ 信息隐藏 ” ,将不想让外界知道的信息隐藏起来。
继承性:继承主要用来描述类与类之间的关系,通过其可以在无需重新编写原有类的情况下,对原有类的功能进行扩展。将其他的功能继承下来继续发展 。
多态性:在一个类中定义的属性和方法被其它类继承后,他们可以具有不同的数据类型或表现出不同的行为。这使得同一种属性和方法在不同的类中具有不同的语义。方法的重载本身就是一个多态性的体现。              

2.1、类与对象:

类是具有相同属性和操作的一组对象的集合

类表示某一群体的基本特征抽象,而对象表示一个个具体的事物。

类是用于描述多个对象的共同特征,他是对象的模板。对象是用于描述现实中的个体,他是类的实例(类是对象的抽象,对象是类的实例)。对象是根据类来产生的,一个类可以对应多个对象(类与对象的关系:一对多)。

在面向对象最核心的就是对象,而创建对象的前提是需要定义一个类。类中可以定义成员方法和成员变量

这是类的定义格式:

class 类名称 {
    成员变量;
    成员方法;
}

局部变量与成员变量的不同:

定义在类中的变量称为成员变量,定义在方法中的变量称为局部变量。在某一个方法中定义的局部变量是允许与成员变量重名的。(成员变量可以不赋值,而局部变量必须要赋值)

2.2对象的创建与使用

创建对象的格式:类名 对象名称 = new 类名();

(1)定义类

public class Car {
    private String color;
    private int year;

       // 构造函数
    public Car(String color, int year) {
        this.color = color;
        this.year = year;
    }

       // 方法
    public void start() {
        System.out.println("Car is starting...");
    }

    // Getter 和 Setter 方法
    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    public int getYear() {
        return year;
    }

    public void setYear(int year) {
        this.year = year;
    }
}

(2)创建类

Car car = new Car("Red", 2020);

(3)使用类

// 访问属性
System.out.println("Car color: " + car.getColor());
System.out.println("Car year: " + car.getYear());

// 调用方法
myCar.start();

调用成员变量的方法:1.对象.成员变量;  2.对象.成员方法();

2.3 访问控制

Java提供了四种访问控制权限,依次是:private(私有)、default(默认(可以省略))、protected(受保护)、public(公共)。

3 封装性

类的封装是指将对象的状态隐藏在对象的内部,不允许外部程序直接访问对象的内部信息,而是通过该类提供的方法实现内部信息的操作访问。封装的作用:相当于一个保护屏障,防止本类的代码或数据被外部程序随机访问。

被私有化(private)的属性只能在类中被访问,如果外界想要访问私有属性,则必须通过setter(设置)和getter(获取)方法设置和获取属性值。

setter对应的this        this关键字 调用类中的内容

getter对应的return        return返回值 return后面必须跟着一个与声明的返回类型相匹配的表达式。如果方法的返回类型是void,那么return后面不需要跟任何表达式,它只是用来提前退出方法。

public int add(int a, int b) {
    return a + b; // 返回两个整数的和
}
public void printHello() {
    System.out.println("Hello");
    return; // 虽然可以省略,但尽量不要省略
}

static关键字 可以使对应的属性和方法变成公共的,都可以来访问。

封装方法:右键单击空白处,选择Generate——setter and getter。

4 构造方法

在实例化方法是自动调用(当你使用new关键字创建一个对象时,Java会自动调用与对象类型匹配的构造方法。)

构造方法要注意的:

  • 构造方法的名称必须与类名完全相同。
  • 构造方法没有返回类型,甚至连void也没有。
  • 每个类可以有多个构造方法,只要它们的参数列表不同(即构造方法的重载)。
  • 不能再构造方法中使用return返回一个值,但是可以单独写return语句作为方法的结束。
  • 在Java中的每个类都至少有一个构造方法,如果一个类中没有定义构造方法,系统则会自动为这个类创建一个默认的构造方法,这个默认的构造方法没有参数。
    //例如以下两种:
    //第一种
    class Student{       //这种虽然没有声明,但是可以用new Student()语句Student的实例对象
    }
    //和下面这一种
    class Stedent {
        public Student(){
        }
    }
    

构造方法的重载:构造方法也可以重载,在一个类中可以定义多个构造方法,只要每个构造方法的参数类型或参数个数不同即可。

构造方法通常使用public进行修饰。因为构造方法通常是类外调用,所以其访问权限不能设为private

构造方法:右键单击空白处,选择Generate——constructor

5 this关键字

this关键字的作用:当成员变量与内部变量重名时,需要使用this关键字分辨成员变量与内部变量。

主要作用:

(1) 使用this关键字调用本类中的属性。        this.属性;    //相当于成员变量

(2)使用this关键字调用成员方法。                this.方法;    //调用同一个类中的普通方法

(3)使用this关键字调用本类的构造方法。     this(参数);   //调用构造方法

Java里在使用this调用类的构造方法时,应注意以下几点

  • 只能在构造方法中使用this调用其他构造方法,不能在成员方法中使用this调用其他构造方法。
  • 使用this调用构造方法必须放在构造方法的第一条语句。且只能出现一次。
  • 不能再一个类的两个构造方法中使用this互相调用。

6 代码块

在Java中,代码块指的是用大括号{}包围的一段代码。代码块可以在多个地方使用,比如在方法中、循环中、条件语句中等。

public void exampleMethod() {
    {
        int localVar = 10; // 只在当前代码块内部可见
    }
    // localVar 在这里不可见
}

构造块的执行顺序优于构造方法。

7 static关键字
如果希望某些属性被所有对象共享,就必须将其声明为static属性。如果属性使用了static关键字进行修饰,则该属性可以直接使用类名称进行调用。除了修饰属性,static关键字还可以修饰成员方法和代码块。


如果在Java程序中使用static修饰属性,则该属性称为静态属性(也称全局属性),静态属性可以使用类名直接访问。

(1)它为该类的公用变量
(2)被该类的所有对象共等3面向对象(上)77
(3)调用方法:类名、静态变量
                      类的实例、静态变量名

标签:调用,第三章,构造方法,对象,面向对象,方法,public,属性
From: https://blog.csdn.net/qq_55830662/article/details/142898135

相关文章

  • 面向对象程序设计-实验1
    任务一: #include<iostream>#include<string>#include<vector>#include<algorithm>usingnamespacestd;template<typenameT>voidoutput(constT&c);voidtest1();voidtest2();voidtest3();intmain(){cout&l......
  • 从本我出发,窥视java面向对象之本源
    掀开面向对象的神秘面纱,我们到底该如何深入理解java的面向对象?1.故事从一个小场景开始:是夜,月黑风高,你单枪匹马独自一人来到幽暗森林,想要去窥探java那神秘而充满好奇的世界。突然,眼前一个黑影一闪而过,你顿时血压飙到250,一句“卧槽”脱口而出,心里害怕极了。“刚刚那玩意到......
  • 【汇编语言】第三章----寄存器(内存访问)(一)—— 内存中字的存储
    文章目录前言1.内存中字的存储2.问题3.问题分析与解答4.结论结语前言......
  • day03——面向对象高级
    day03——面向对象高级各位同学,前面两天我们已经把面向对象最主要的内容学习完了,剩下的这些语法知识学完,那么Java语法知识就算全齐活了。今天学习的内容同学们学习起来会更轻松一些,有一些语法知识只需要了解一下就可以了,因为实际工作用得并不多。我们先来了解第一个语法知识,内......
  • day02——面向对象高级
    day02——面向对象高级今天我们继续学习面向对象的语法知识,我们今天学习的主要内容是:多态、抽象、接口。学会这些语法知识,可以让我们编写代码更灵活,代码的复用性更高。一、多态接下来,我们学习面向对象三大特征的的最后一个特征——多态。1.1多态概述什么是多态?多态是在继......
  • day01-面向对象高级
    day01——面向对象高级各位同学,接下来的三天课程中,我们继续学习面向对象的相关课程。面向对象是写Java程序的核心套路,如何你不懂面向对象,那就相当于Java你白学了。所以在接下来的三天时间里,各位同学也需要克服重重困难好好学习。前面我们说过面向对象最核心的套路是:设计对象来处......
  • 面向对象编程系列3
    多态理解多态之前,要先明白什么是向上转型和动态绑定。这个向上转型字面上的意思就是子类--->父类。我们在实例化一个鸟类时,可以这样写:Birdbird=newBird("jj");或者:​Birdbird=newBird("jj");Animalbird1=bird;//两行代码组合起来......
  • 一个月学会Java 第11天 面向对象——多态
    Day11面向对象——多态我们来复习一下面向对象的三大特性分别是什么,面向对象拥有的三大特性分别为继承、封装、多态。继承我们也已经学过了,就是父类和子类、封装其实也学过了其实就是访问修饰符和包,主要的作用为更好的封装我们接下来要讲的多态则是面向对象的最难点,他......
  • PTA 作业六 JAVA 面向对象程序设计6-2 sdut-oop-list-1 学生集合(类、集合)作者 周雪芹
    6-2sdut-oop-list-1学生集合(类、集合)分数15作者 周雪芹单位 山东理工大学以下程序不完整,请你根据已经给出的程序代码中表达的题意,以及程序的输入、输出信息,完成Student类的设计,补全代码。函数接口定义:classStudent{}裁判测试程序样例:importjava.util.ArrayLi......
  • 理解Java中的面向对象
    文章目录前言1封装性1.1C语言中的封装1.2Java中的封装1.2.1基本概念1.2.2类的使用方法1.2.2.1构造方法1.2.2.2对象的创建与使用1.2.3访问权限2继承性3多态性3.1方法重写3.2方法重载总结前言面向对象与面向过程是当今编程世界的两种编程思想,面向过程......