当前位置: 首页 > news >正文

Javase 基础入门 —— 03 面向对象编程

本系列为笔者学习Javase的课堂笔记,视频资源为B站黑马程序员出品的《黑马程序员Java+AI智能辅助编程全套视频教程,java零基础入门到大牛一套通关》,章节分布参考视频教程,为同样学习Javase系列课程的同学们提供参考。

01 什么是对象?

类:类是对象的模板,或者对象的设计图,每new一次类,可以获得一个新对象。

对象:对象是一种特殊的数据结构,也可以理解为一张表。万物皆对象,谁的数据谁存储。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

//类
public class Star{String name; // 属性or变量int age;double height;double weight;
}public static void main(String[] args){Star s = new Star; //对象s.name = "杨幂";s.age = 18;s.height = 1.8;s.weight = 95;
}

02 案例:面向对象

在这里插入图片描述

package.com.itheima.object;public class Student{String name;int cScore;int mScore;//封装:将数据和对数据的处理放到同一个类当中public void printAllScore(){System.out.println(name + "的总成绩是" + (cScore + Score));}public void printAverageScore(){System.out.println(name + "的平均成绩是" + (cScore + Score) / 2);}
}
package.com.itheima.object;public class Test{public static void main(String[] args){Student s1 = new Student;s1.name = "波妞";s1.cScore = 100;s1.mScore = 100;System.out.println(s1.name + "的总成绩是" + (s1.cScore + s1.Score));System.out.println(s1.name + "的平均成绩是" + (s1.cScore + s1.Score) / 2);} //s1.printAllScore();//s1.printAverageScore();
}

类的基本语法,包括构造器、this、封装、Javabeanstatic

03 构造器

package.com.itheima.object;public class Student{public Student(String name, int age, char sex){this.name = name;this.age = age;this.sex =sex;}
}

04 This 关键字

this是一个变量,可以用在方法中,用来拿到当前对象,解决对象的成员变量局部变量名称一样时,导致访问冲突问题的。

package.com.itheima.object;public class Student{public void print(){System.out.println(this.name);}
}

05 封装

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

在这里插入图片描述

Student.java学生类

package.com.itheima.object;public class Student{private String name;private double chinese;private double math;private int age;public void setAge(int age){ this.age = age;}public int getAge(){return age;}
}

注:目前企业要求成员变量必须全部为私有制。

StudentOperator.java学生操作类

package.com.itheima.object;public class StudentOperator{private Student s; //记住学生对象 ⭐public StudentOperator(Student s){ //学生对象传递 ⭐this.s = s;}public void printAllScore(){System.out.println(s.name + "的总成绩是" + (s.cScore + s.Score));}public void printAverageScore(){System.out.println(s.name + "的平均成绩是" + (s.cScore + s.Score) / 2);}
}

Test.java测试类

package.com.itheima.object;public class Test{public static void main(String[] args){//数据存取Student s1 = new Student("波妞", 100, 100, 8);//数据操作StudentOperator operator = new StudentOperator(s1);operator.printAllScore();operator.printAverageScore();}
}

什么是实体类?

实体类是一种特殊类,需要满足类中的成员变量全部私有,并提供public修饰的getter/setter方法,另外,类中需要提供一个无参构造器,有参构造器可选。

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

06 Static 关键字

static意为静态,可以修饰成员变量、成员方法。

成员变量按照有无static修饰,分为静态变量(类变量)和实例变量(对象变量)两种。

静态变量(类变量):属于类,始终为一块区域

实例变量(对象变量):属于每个对象

在这里插入图片描述

在这里插入图片描述

注:如果某个数据只需要一份,且希望能被共享(访问、修改),则该数据可以定义成静态变量。

成员变量按照有无static修饰,分为静态方法和实例方法。

静态方法:属于类

实例方法:属于对象

什么是工具类?

工具类中的方法都是静态方法,实现一个个功能,可以提高代码复用性,调用方便,开发效率高。

注:工具类没有创建对象的可能性,所以建议私有化构造器。

static注意事项:

  • 静态方法中可以直接访问静态成员,不可以直接访问实例成员。
  • 实例方法中既可以直接访问静态成员,也可以直接访问实例成员。
  • 实例方法中可以出现this关键字,静态方法中不可以出现this关键字的。
package com.itheima.object;public class Test{// 静态变量public static int count = 100;//静态方法public static void helloWorld(){System.out.println("Hello, world!");}//实例变量private String name;//实例方法private void helloJava(){System.out.println("Hello, java!");}public static void main(String[] args){System.out.println(count);helloWorld();  }public void gogogogo(){//调用静态成员System.out.println(count);helloWorld(); //调用实例成员System.out.println(name);helloJava(); }
}

07 案例:电影信息展示

Movie.java

package movie;public class Movie {private int id;private String name;private double price;private String actor;public Movie() {}public Movie(int id, String name, double price, String actor) {this.id = id;this.name = name;this.price = price;this.actor = actor;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}public String getActor() {return actor;}public void setActor(String actor) {this.actor = actor;}
}

MovieOperator.java

package movie;import java.util.Scanner;public class MovieOperator {//构造函数上大分private Movie[] movies;public MovieOperator(Movie[] movies){this.movies = movies;}public void printAllMovies(){for(int i=0; i<movies.length; ++i){Movie m = movies[i];System.out.println(m.getId() + "\t"+ m.getName() + "\t"+ m.getPrice() + "\t"+ m.getActor());}}public void printSelectMovieById(){System.out.println("请输入您要查找的电影id:");Scanner sc = new Scanner(System.in);int n = sc.nextInt();for(int i=0; i<movies.length; ++i){Movie m = movies[i];if(m.getId() == n){System.out.println(m.getId() + "\t"+ m.getName() + "\t"+ m.getPrice() + "\t"+ m.getActor());}}}
}

Test.java

package movie;public class Test {public static void main(String[] args) {Movie[] movies = new Movie[6]; //万物皆类型movies[0] = new Movie(1,"星际穿越", 9.6, "孙二");movies[1] = new Movie(2,"蝙蝠侠", 8.7, "张三");movies[2] = new Movie(3,"间谍", 8.5, "李四");movies[3] = new Movie(4,"天外来客", 9.2, "王五");movies[4] = new Movie(5,"AI", 9.0, "赵六");movies[5] = new Movie(6,"月球引力", 8.2, "钱七");MovieOperator operator = new MovieOperator(movies);operator.printAllMovies();operator.printSelectMovieById();}
}

报错:

在这里插入图片描述

解决:

在这里插入图片描述

在这里插入图片描述

相关文章:

  • 欧拉环境(openEuler 22.03 LTS SP3)安装移动磐维数据库(PanWeiDB_V2.0-S2.0.2_B01)步骤
  • 【漫话机器学习系列】219.支持向量机分类器(Support Vector Classifier)
  • 【异常解决】Spring Boot 返回排序后的 Map 但前端接收顺序不对的解决方案
  • Django 实现电影推荐系统:从搭建到功能完善(附源码)
  • Django DRF实现用户数据权限控制
  • 什么是数据库的DDL和DML,有什么区别?
  • Ollama API 应用指南
  • STM32与i.MX6ULL内存与存储机制全解析:从微控制器到应用处理器的设计差异
  • ROS 快速入门教程02
  • 游戏引擎学习第240天:将渲染器移至第三层
  • 【新能源科学与技术】MATALB/Simulink小白教程(一)实验文档【新能源电力转换与控制仿真】
  • C++入门小馆: 探寻vector类
  • 【华为】防火墙双击热备-之-主备模式-单外网线路
  • 第七节:进阶特性高频题-Vue3的ref与reactive选择策略
  • 0802api设计和实战-网络ajax请求1-react-仿低代码平台项目
  • 3.3 技术框架:LangChain、ReAct、Memory与Tool Integration
  • Axios 是一个基于 Promise 的 HTTP 客户端,可用于浏览器和 Node.js 环境。以下是它的一些主要作用
  • 精益数据分析(17/126):精益画布与创业方向抉择
  • 学习记录:DAY16
  • 玩转Docker | 使用Docker部署Neko自托管浏览器
  • 《亡命驾驶》:一场对于男子气概的终极幻想
  • 限制再放宽!新版市场准入负面清单缩减到106项
  • 文旅部:今年一季度国内出游人次17.94亿,同比增长26.4%
  • 朱守科已任西藏自治区政府党组成员、自治区公安厅党委书记
  • 广州远洋宾馆负一层配电房发生火情:明火已扑灭,无人员伤亡
  • 88岁罗马教皇方济各突然去世,遗嘱内容对外公布