Java07-面向对象基础

目录

理解面向对象

面向对象编程有什么好处

程序中的面向对象是什么

 对象在计算机中的执行原理

类和对象的一些注意事项

注意事项

this

是什么

执行原理

应用场景

构造器

认识构造器

构造器的特点

应用场景

注意事项

封装

什么是封装

设计规范

代码层面如何控制对象的成员公开或者隐藏

实体JavaBean

实体类是什么

实体类特点和应用场景

补充:成员变量、局部变量的区别


理解面向对象

面向对象编程有什么好处

凡事找对象的编程套路,更符号人类的思维习惯,编程也会更直观

程序中的面向对象是什么

对象本质上是一种特殊的数据结构

class也就是类,也称为对象的设计图(或者对象的模板)

面向对象(Object-Oriented Programming,OOP)是一种编程范式,它将程序中的数据和操作数据的方法组织成“对象”,通过这些对象之间的交互来完成程序的功能。在 Java 中,面向对象的核心思想是将现实世界中的事物抽象为类和对象,类是对象的模板或蓝图,定义了对象的属性(变量)和行为(方法),而对象是类的实例。通过面向对象编程,可以提高代码的可维护性、可复用性和可扩展性,使程序更贴近现实世界的逻辑。

 对象在计算机中的执行原理

1、使用new关键字在堆内存中分配内存并创建对象

2、初始化对象的属性和状态

3、通过引用来访问和操作对象

4、当对象不再被引用时,垃圾回收器会回收对象所占用的内存

类和对象的一些注意事项

注意事项

  • 类名建议用英文单词,首字母大写,满足驼峰模式,且要有意义
Student Car Animal
  • 类中定义的变量也称为成员变量(对象的属性),类中定义的方法也称为成员方法(对象的行为)
  • 成员变量本身存在默认值,同学仔定义成员变量时一般来说不需要赋初值
package com.sangria.learn
//Student.java
public class Student{
    String name;
    double chinese;
    double math;
    
    public void printTotalScore(){
        System.out.printIn(name+"总成绩是:"+(chinese+math));
    }
    public void printEverageScore(){
        System.out.printIn(name+"平均成绩是:"(chinese+math)/2.0);
    }
}

package com.sangria.learn
//Test1.java
public class Test1(){
    public static void main(String90 args){
        Student s = new Student();
        System.out.printIn(s.name);
        System.out.printIn(s.chinese);
        System.out.printIn(s.math);
    }
}    

 输出结果:

null
0.0
0.0
  • 一个代码文件中,可以写多个class类,但只能一个用public修饰,且public修饰的类名必须成为代码文件名
  • 对象与对象之间的数据不会相互影响,但是多个变量指向同一个对象时就会互相影响
  • 如果某个对象没有一个变量引用他,则该对象无法被操作了,该对象会成为所谓的垃圾对象

this

this是什么

this是一个变量,可以用在方法中,来拿到当前的对象

//Test.java
public class Test{
    public static void main(String90 args){
        Student s1 = new Student();
        System.out.printIn(s1);
        s1.printThis();
        
        Student s2 = new Student();
        System.out.printIn(s2);
        s2.printThis();
    }
}

//Student.java
public class Student{
    public void printThis(){
    System.out.printIn(this);
    }
}

this的执行原理

在 Java 中,`this` 是一个关键字,用于引用当前对象。当在一个对象的方法或构造方法中使用 `this` 时,它会指向调用该方法或构造方法的对象本身。`this` 可以用来访问对象的属性和方法,或者在构造方法中调用其他构造方法。简单来说,`this` 就是当前对象的一个“自我指针”,帮助对象在自己的方法中访问自己的属性和方法。

this的应用场景:

this用于解决:变量名称冲突问题

//Studnet.java

public class Student{
    double score;

    public void printThis(){
        System.out.printIn(this);
    }
    public void printPass(double score){
        if(this.score>score){        //当前对象的成绩是否大于....的分数
            System.out.printIn("恭喜您,您成功考入了哈佛大学!");
        }else{
            System.out.printIn("落选了");
        }
    }
}
// Test.java
public class Test{
    public static void main(String[] args){
        Student s3 = new Student();
        s3.score = 325;
        s3.printPass(300);
    }
}

构造器

认识构造器

public class Student{
    public Student(){
        ...
    }
}

构造器的名字和当前类名字相同,且不写返回值类型,当你写了这样的方法,那这样的方法我们就称之为构造器

构造器的特点

创建对象时,对象会去调用构造器

构造器的应用场景

创建对象时,,同时完成对对象成员变量(属性)的初始化赋值

//没有构造器时,需要先new对象再赋值
Student s1 = new Student();
s1.name = "张三";
s1.score = 100;

//有构造器一句话解决
Student s1 = new Student("张三",100);

构造器的注意事项

  • 类在设计时,如果不写构造器,java会为类自动生成一个构造器
  • 一旦定义了有参数构造器,java就不会帮我们的类自动生成无参构造器了,此时就建议自己手写一个无参数构造器出来了

封装

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

什么是封装

类设计对象处理某一个事物的数据时,应该吧要处理的数据,以及处理这些数据的方法,设计到一个对象中去

封装的设计规范

合理隐藏,合理暴露

//Student.java
public class Student{
    private double score;
//这里我们的需求是需要别人能给输入成绩,但是又不能让别人瞎赋值,所以我们可以先让这个变量私有private,然后写出对应的方法让别人可以对成绩赋值,但是又不能乱赋值
    public void setScore(double score){
        if(score >= 0&& score <= 100){
            this.score = score;
    }else{
        System.out.printIn("数据非法!");
    }
}
    public double getScore(){
        return score;
    }
    
    public void printPass(){
        System.out.printIn(score>=60?"成绩合格":"成绩不合格");
    }
}




//Test.java
public class Test{
    Student s1 = new Student();
    s1.setScore();
    System.out.printIn(s1.getScore());
    
    }
}

代码层面如何控制对象的成员公开或者隐藏

公开成员:可以用public修饰

隐藏成员:使用private修饰

实体JavaBean

实体类是什么

就是一种特殊形式的类

  • 这个类中的成员变量都要私有,并且对外提供相应的getXxx,setXxx方法
  • 类中必须要有一个公共无参的构造器
public class Student{
    private String name;
    private double score;
    
}

 快速书写get、set方法——右键——generate——getter and setter
 

因为两个成员变量都需要生成get、set方法,所以按住shift点击未被选中的(非蓝色的)然后下方的ok即可

第二个要求就是:需要一个无参数构造器,但是因为java会自动生成无参数构造器,所以我们不用写,但是很多情况有参数构造器是可以方便别人的使用,所以我们可以写一个有参数构造器,再写一个无参数构造器(有了有参数构造器,java不再自动生成无参数构造器),这里有参数构造器也不需要我们自己去写,可以生成:
右键——generate——constructor(构造器)——shift选中所有即可

 现在写无参数构造器,这个也可以生成:

同样的constructor——然后下方的select None

实体类特点和应用场景

实体类只负责数据存取,而对数据的处理交给其他类来完成,以实现数据和数据业务处理相分离

特点:
在 Java 中,实体类(Entity Class)是一种用于表示业务对象或数据模型的类,其特点是以封装数据为主,通常包含私有成员变量、对应的 getter 和 setter 方法、构造器以及一些业务逻辑方法,遵循 Java 的封装原则,将数据和操作数据的方法绑定在一起。

应用场景:
实体类在 Java 开发中应用广泛,比如在 Java 持久层技术(如 Hibernate、MyBatis 等)中用于映射数据库表,实现对象与关系数据库之间的数据交互;在 Java Web 开发中,用于封装前端传来的请求数据或向前端传递响应数据,作为数据传输对象(DTO),确保数据的完整性和一致性,提高代码的可维护性和可读性。

刚刚学习到的小技巧:快速对一段代码加比如while语句

选中该段代码 ctrl+shift+T然后选择需要的代码即可

补充:成员变量、局部变量的区别

区别成员变量局部变量
类中位置不同类中,方法外常见于方法中
初始化位置不同有默认值,不需要初始化赋值没有默认值
内存位置不同堆内存栈内存
作用域不同整个对象在所归属的大括号中
生命周期不同与对象共存亡随着方法的调用而生,随着方法的运行结束而亡

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值