Java类与对象(知识点+练习+扩展)

  • 👨‍💻作者简介: 大家好,我是小火车~~,在校大二学生一枚
  • 🛳️个人主页: 嘟嘟嘟的小火车的博客
  • 📗系列专栏: 本文写在《java从0到1》专栏
  • ✉️如果文章知识点有错误的地方,请指正! 和大家一起学习一起进步🎈
  • 🔥如果觉得博主的文章还不错的话,请👍三连支持👍一下博主哦


一.初识面向对象

1.什么是面向对象?

面向对象是一种符合人类思维习惯的编程思想。现实生活中存在各种形态不同的事物,这些事物之间存在着各种各样的联系。在程序中使用对象来映射现实中的事物,使用对象的关系来描述事物之间的联系,这种思想就是面向对象。

2.面向过程和面向对象的对比

面向过程

面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一一实现,使用的时候依次调用就可以了。

面向对象

面向对象则是把构成问题的事务按照一定规则划分为多个独立的对象,然后通过调用对象的方法来解决问题。

3.解决问题的思路

对于解决复杂的项目,为了从宏观上把握,从整体上理性分析,我们需要使用面向对象的思路来分析整个项目;但是具体到微观操作,仍然需要面向过程的思路去解决.

4.面向对象编程(OOP)

面向对象编程的本质就是:以类的方式组织代码,以对象的方式组织(封装) 数据

5.Java的3大特性

封装

封装是面向对象的核心思想,将对象的属性和行为封装起来,不需要让外界知道具体实现细节

继承

继承主要描述的就是类与类之间的关系,通过继承,可以在无需重新编写原有类的情况下,对原有类的功能进行扩展

多态

多态指的是在一个类中定义的属性和功能被其他类继承后,当把子类对象直接赋值给父类引用变量时,相同引用类型的变量调用同一个方法所呈现出的多种不同行为特性

二.方法回顾和加深

基础知识点请参考Java方法(知识点+练习+扩展)文章

1.方法的定义

  • 修饰符
  • 返回值类型
  • break和return的区别
  • 方法名:注意规范,见名知意
  • 参数列表
  • 异常抛出
public class Demo01 {
    //main方法,程序一般只有一个main方法
    public static void main(String[] args) {
        
    }
	
    public String sayHello(){
        return "hello,world";
    }
    //返回空 return用来结束方法
    public void hello(){
        return;
    }

    public int max(int a,int b){
        return a>b?a:b;//三元运算符
    }
    //初识异常抛出  后面会详细讲解
    public void readFile(String file) throws IOException{

    }
}

2.方法的调用

  • 静态方法
public class Demo01 {
    //main方法,一个项目一般只有一个main方法
    public static void main(String[] args) {
        //静态方法直接可以调用
        String hello = sayHello();
        System.out.println(hello);
    }

    public static String sayHello(){
        return "hello,world";
    }
    
}
  • 非静态方法
public class Demo01 {
    //main方法,程序一般只有一个main方法
    public static void main(String[] args) {
        //非静态方法需要先实例一个对象,然后在调用
        Demo01 demo01 = new Demo01();
        String hello = demo01.sayHello();
        System.out.println(hello);
    }

    public String sayHello(){
        return "hello,world";
    }
    
}
  • 形参和实参

形式参数和实际参数要对应

  • 值传递和引用传递

值传递

基本类型参数的传递,是调用方值的复制.双方各自的修改,互不影响.

简单的来说,方法内部对参数变量的任何操作,都不会影响到方法外部的变量.

public class Demo02 {
    public static void main(String[] args) {
        int a = 1;
        System.out.println(a);//1
        //值传递  把1传递给了形式参数,没有返回值,a还是1
        change(a);
        System.out.println(a);//1
    }

    public static void change(int a){
        a=10;
    }
}

引用传递

引用类型的传递,调用方的变量和接收方的参数变量,地址指向的是同一个对象.双方任意一方对这个变量的修改,都会影响对方.

public class Demo03 {
    public static void main(String[] args) {
        //引用传递
        Person person = new Person();
        //默认为null
        System.out.println(person.name);
        //调用方法改变person对象name属性
        change(person);

        System.out.println(person.name);
    }
    public static void change(Person person){
        person.name = "小火车";
    }
}
class Person{
    String name;
}

三.类与对象

1.类与对象的关系

  • 面向对象的编程思想,力图让程序中对事物的描述与该事物在现实中的形态保持一致。为了做到这一点,面向对象的思想中提出了两个概念——类和对象。

  • 类是对某一类事物的抽象描述,而对象用于表示现实中该类事物的个体。

  • 类用于描述多个对象的共同特征,它是对象的模板,而对象用于描述现实中的个体,它是类的实例。对象是类的具体化,并且一个类可以对应多个对象。

2.类的定义

  • 在面向对象的思想中,最核心的就是对象。
  • 为了在程序中创建对象,首先需要定义一个类。
  • 类是对象的抽象,它用于描述一组对象的共同特征和行为,例如人都有姓名、年龄、性别等特征,还有学习、工作、购物等行为。
  • 以面向对象的编程思想,就可以将某一类中共同的特征和行为封装起来,把共同特征作为类的属性(也叫成员变量),把共同行为作为类的方法(也叫成员方法)。

类的定义格式

[修饰符] class 类名 [extends 父类名] [implements 接口名]{

​ // 类体,包括类的成员变量和成员方法

}

声明(定义)成员变量

[修饰符] 数据类型 变量名 [ = 值];

某一个方法中定义的局部变量与成员变量同名,这种情况是允许的,此时方法中通过变量名访问到的是局部变量,而并非成员变量。

声明(定义)成员方法

[修饰符] [返回值类型] 方法名([参数类型 参数名1,参数类型 参数名2,…]){

​ //方法体 …

​ return 返回值; //当方法的返回值类型为void时,return及其返回值可以省略

}

package oop.demo02;
//Students类
public class Students {

    String name;
    int age;
    
    public void study(){
        System.out.println(this.name+"正在学习.");
    }
}

3.对象的创建和使用

  • 使用new关键字创建对象

  • 使用new关键字创建的时候,除了分配内存空间外,还会给创建好的对象进行默认的初始化以及对类中构造器的调用.

对象创建的语法格式:

类名 对象名称 = new 类名();

package oop.demo02;
//Students类
public class Students {

    String name;
    int age;
    
    public void study(){
        System.out.println(this.name+"正在学习.");
    }
}
package oop.demo02;
public class Application {
    //一个项目应该只存一个main方法
    public static void main(String[] args) {
        //类实例化后会返回一个自己的对象
        Students xm = new Students();
        Students xh = new Students();
        //对象在创建的时候会初始化 name默认值为null age默认值为0
        System.out.println(xm.name);
        System.out.println(xm.age);
        //
        xm.name="小明";
        xm.age=17;
        xh.name="小红";
        xh.age=18;
        System.out.println(xm.name);
        System.out.println(xm.age);
        System.out.println(xh.name);
        System.out.println(xh.age);
    }
}

对象成员的调用:

①通过对象的引用来访问对象所有的成员.

对象引用.对象成员

②直接使用创建的对象本身来引用对象成员.

new 类名().对象成员

对比说明:

第2种方式,创建实例对象的同时就访问了对象成员,并且在创建后只能访问其中某一个成员,而不能像第1种方式那样可以访问多个对象成员。

同时,由于没有对象引用的存在,在完成某一个对象成员的访问后,该对象就会变成垃圾对象。

所以,在实际开发中,创建实例对象时多数会使用对象引用。

成员变量的初始值

成员变量类型初始值
byte、short、int、long0
float、double0.0
char一个空字符,即’\u0000’
booleanfalse
引用数据类型null,表示变量不引用任何对象

4.访问控制符

在Java中,针对类、成员方法和属性提供了四种访问级别,分别是private、default、protected和public。

在这里插入图片描述

四种访问控制级别说明:

  • private(当前类访问级别):如果类的成员被private访问控制符来修饰,则这个成员只能被该类的其他成员访问,其他类无法直接访问。类的良好封装就是通过private关键字来实现的。
  • default(包访问级别):如果一个类或者类的成员不使用任何访问控制符修饰,则称它为默认访问控制级别,这个类或者类的成员只能被本包中的其他类访问。
  • protected(子类访问级别):如果一个类的成员被protected访问控制符修饰,那么这个成员既能被同一包下的其他类访问,也能被不同包下该类的子类访问。
  • public(公共访问级别):这是一个最宽松的访问控制级别,如果一个类或者类的成员被public访问控制符修饰,那么这个类或者类的成员能被所有的类访问,不管访问类与被访问类是否在同一个包中。
访问范围privatedefaultprotectedpublic
同一类中✔️✔️✔️✔️
同一包中✔️✔️✔️
子类中✔️✔️
全局范围✔️

5.构造方法(构造器)

  • 类中的构造器也称为构造方法,是在进行创建对象的时候必须要调用的.
  • 是类的一个特殊成员,它会在类实例化对象时被自动调用。
  • 如果需要在实例化对象的同时就为这个对象的属性进行赋值,可以通过构造方法来实现。

并且构造器有以下两个特点:

  • 必须与类的名字相同
  • 在方法名的前面没有返回值类型的声明。
  • 在方法中不能使用return语句返回一个值,但是可以单独写return语句来作为方法的结束。

定义构造方法的语法格式:

[修饰符] 方法名 ([参数列表]){

​ // 方法体

}

package oop.demo03;

public class Application {
    public static void main(String[] args) {
        //new 实例化了一个对象
        //使用new关键字 本质是在调用构造器
        Person person = new Person();
        System.out.println(person.name);
    }
}
//Person类
package oop.demo03;

public class Person {

    String name;

    public Person(){
        this.name = "小火车";
    }
}

默认的无参构造方法

在Java中的每个类都至少有一个构造方法,如果在一个类中没有显示地定义构造方法,系统会自动为这个类创建一个默认的无参构造方法。

class Person {
    public Person() {
    }    
}

有参构造

package oop.demo03;

public class Application {
    public static void main(String[] args) {
        //new 实例化了一个对象
        //使用new关键字 本质是在调用构造器
        Person person = new Person("嘟嘟嘟的小火车");
        System.out.println(person.name);
    }
}
//Person类
package oop.demo03;

public class Person {

    String name;

    public Person(){
        this.name = "小火车";
    }
    public Person(String name){
        this.name = name;
    }
}

当使用有参构造后,必须把无参构造也打出来,否则没有参数创建对象会报错

6.创建对象内存分析

对象创建的内存分配:

在这里插入图片描述

  • Java将内存分为两种,即栈内存和堆内存。

  • 其中栈内存用于存放基本类型的变量和对象的引用变量(如Person p),堆内存用于存放由new创建的对象和数组。

  • 在创建对象时,程序会占用两块内存区域,分别是栈内存和堆内存。

  • 其中Person类型的变量p被存放在栈内存中,它是一个引用,会指向真正的对象;通过new Person()创建的对象则放在堆内存中,这才是真正的对象。


其他专栏

❤️《编程相关技能》专栏
🧡《HTML5》专栏
💛《CSS3》专栏
💚《java从0到1》专栏
💙《英语语法》专栏

  • 41
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 27
    评论
### 回答1: 如果您想要下载计算机二级Java 120道公共基础,建议您采取以下步骤: 1. 确认下载来源:为避免下载到恶意软件或病毒,建议您只从正规且可靠的网站下载二级Java库。 2. 搜索库:可以使用搜索引擎输入相关关键词,例如“计算机二级Java基础库下载”,检索并比较各家网站,找到您需要的资源。 3. 确认文件格式:不同网站提供的资源格式可能不同,包括PDF、Word、txt等等,您需要确认自己需要的是哪种格式,以免下载错误的文件。 4. 下载并解压文件:下载完成后,您需要解压缩文件至自己的电脑,然后打开相应的文件查看目。 5. 备份文件:下载完成后,建议您备份自己的文件,以免出现丢失等问。 总之,下载计算机二级Java 120道公共基础需要您多方考虑并仔细确认,确保您能够顺利高效地准备考试。 ### 回答2: 计算机二级Java 120道公共基础是一份相当实用的学习资源,它能够帮助学习者夯实Java的基础知识,提高Java编程能力。对于想要通过计算机二级考试的学生来说,这份资源也是必不可少的。以下是下载Java 120道公共基础的方法: 1. 打开搜索引擎,输入“Java二级120道公共基础下载”,搜索结果会出现若干个下载链接。 2. 从搜索结果中挑选可靠的下载链接,下载资源。有些链接可能需要注册或支付,需要根据自己的需求选择。 3. 下载完成后,解压缩文件。文件中应包含120道目以及相应答案。 4. 开始练习。建议先从简单的目开始做起,逐步提高难度,同时可以参考答案进行练习。在练习的过程中,不仅要细心,还要注重积累和巩固知识点。 5. 练习之余,还可以看一下Java的相关教材和视频资料,扩展知识面,更好地掌握Java语言。 总之,Java二级120道公共基础是学习Java的必备资料之一,期望通过以上的介绍,能够帮到有需要的人。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 27
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值