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

Java07--面向对象

1.面向对象介绍

面向对象就是写程序的套路,面向对象编程可以理解为拿东西过来做对应的事情

面向对象编程的例子:

import java.util.Random;
import java.util.Scanner;public class Demo {public static void main(String[] args) {//创建一个Random对象,用于得到随机数Random r = new Random();//生成1~10之间的随机数int data = r.nextInt(10)+1;System.out.println(data);//创建一个Scanner对象,用于接收用户输入的数据Scanner sc = new Scanner(System.in);int age = sc.nextInt();System.out.println(age);}
}

2.类和对象

  • 类(设计图):是对象共同特征的描述

  • 对象:是真实存在的具体东西

Java中,必须先设计类,才能获得对象

2.1 类的组成和定义

类由属性和行为两部分组成

  • 属性:指事物的特征,如手机事物(品牌,价格);在类中通过成员变量来体现(类中方法外的变量)

  • 行为:指事物能执行的操作,如手机事物(可以打电话);在类中通过成员方法来体现(和一般的方法相比,去掉 static 关键字即可)

类的定义步骤

  1. 定义类

  2. 编写类的成员变量

  3. 编写类的成员方法

示例:

public class Demo {//成员变量String brand;int price;//成员方法public void call() {System.out.println("打电话");}public void sendMessage(){System.out.println("发短信");}
}

2.2 对象的使用 

  • 创建对象的格式

类名 对象名 = new 类名()

  • 调用对象的格式 

对象名.成员变量 

对象名.成员方法

示例: 

public class Demo {public static void main(String[] args) {//创建对象Phone p = new Phone();//使用成员变量p.brand = "小米";p.price = 1999;System.out.println(p.brand);System.out.println(p.price);//使用成员方法p.call();p.sendMessage();}
}

2.3 练习 

需求:定义一个学生类,再定义一个学生测试类,在测试类中通过对象完成成员变量和成员方法的使用

分析:

  • 成员变量:姓名,年龄
  • 成员方法:学习,写作业

代码实现:

public class Demo {//成员变量String name;int age;//成员方法public void study(){System.out.println("好好学习,天天向上");}public void doHomework(){System.out.println("写作业");}
}
//学生测试类
public class StudentDemo {public static void main(String[] args) {//创建对象Demo s = new Demo();//使用对象s.name = "李华";s.age = 18;System.out.println(s.name + "," + s.age);s.study();s.doHomework();}
}

3. 封装

3.1 封装概述

是面向对象三大特征之一(封装、继承、多态)

对象代表什么,就要封装对应的数据,并提供数据对应的行为

3.2 封装思想的好处

  • 让编程变得简单,有什么事,找对象,调用方法
  • 降低学习成本,可以少学少记,不用记对象有哪些方法,有需要时去找就行

3.3 封装代码实现 

将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问,这时就要用到一个关键字 private

4. private关键字

4.1 概述

private 是一个修饰符,可以用来修饰成员变量和成员方法

被 private 修饰的成员,只能在本类中进行访问

针对 private 修饰的成员变量,如果需要被其他类使用,需提供相应操作:

  •  提供“set变量名(参数)”方法,用于设置成员变量的值,方法用 public 修饰
  • 提供“get变量名()”方法,用于获取成员变量的值,方法用 public 修饰

4.2 代码示例:private 的使用

  • 需求:定义标准的学生类,要求 name 和 age 使用 private 修饰,并提供 set ,get 方法和 show 方法(显示数据)
  • 代码:
//学生类
public class Demo {//成员变量private String name;private int age;//针对每一个私有化的成员变量,都要提供get和set方法//set方法:给成员赋值//get方法:对外提供成员变量的值public void setName(String n) {name = n;}public String getName() {return name;}public void setAge(int a) {if (a >= 18 && a <= 50) {age = a;} else {System.out.println("非法参数");}}public int getAge() {return age;}//行为public void show() {System.out.println(name + "," + age);}
}
//学生测试类
public class Text {public static void main(String[] args) {//创建对象Demo gf1 = new  Demo();//给成员变量赋值gf1.setName("李华");gf1.setAge(18);System.out.println(gf1.getName());System.out.println(gf1.getAge());gf1.show();}
}

 5.成员变量和局部变量

5.1 区别

  • 类中位置不同:成员变量在类中方法外,局部变量在方法内部或方法声明上
  • 内存中位置不同:成员变量(堆),局部变量(栈)
  • 生命周期不同:成员变量随着对象的消失而消失,局部变量随着方法的调用完毕而消失
  • 初始化值不同:成员变量有默认初始化值;局部变量没有,必须先定义,赋值才能用

代码示例 :

public class Demo {//成员变量private String name;private int age;public void method(){//局部变量int age = 10;System.out.println(age);}

5.2 就近原则 

谁离我近,就用谁

public class Demo {//成员变量private String name;private int age;public void method(){//局部变量int age = 10;System.out.println(age);}

代码打印10 

6.this关键字

this 修饰的变量用于指代成员变量,其主要作用是区分局部变量和成员变量(这两个变量的重名问题)

方法的形参如果与成员变量同名,不带 this 修饰的变量指的是形参

代码示例:


public class Demo {private String name;private int age;public void setName(String name) {this.name = name;}public String getName() {return name;}public void setAge(int age) {if (a >= 18 && a <= 50) {this.age = age;} else {System.out.println("非法参数");}}public int getAge() {return age;}public void show() {System.out.println(name + "," + age);}
}

7.构造方法

 7.1 概述

是一种特殊方法,也叫作构造器、构造函数;作用是在创建对象的时候给成员变量初始化

格式:

public class 类名{

修饰符 类名(参数){

        方法体;

}

}

7.2 注意事项 

  • 方法名与类名相同
  • 没有返回值类型,也没有 void
  • 如果没有定义构造方法,系统会给出一个默认的无参数构造方法
  • 建议:无论是否使用,都写上无参数构造方法
  • 可以用带参构造,给成员变量进行初始化

代码示例:

//学生类class Student {private String name;private int age;//无参数构造方法public Student() {}public Student(String name) {this.name = name;}public Student(int age) {this.age = age;}public Student(String name,int age) {this.name = name;this.age = age;}public void show() {System.out.println(name + "," + age);}
}

//测试类public class StudentDemo {public static void main(String[] args) {//创建对象Student s1 = new Student();s1.show();//public Student(String name)Student s2 = new Student("李华");s2.show();//public Student(int age)Student s3 = new Student(18);s3.show();//public Student(String name,int age)Student s4 = new Student("李华",18);s4.show();}
}

8.标准的JavaBean类

标准类制作 :

  •  类名要见名知意
  • 成员变量需用 private 修饰
  • 至少提供两个构造方法:无参构造方法和带全部参数的构造方法
  • 提供每一个成员变量对应的 get和 set方法
  • 如果还有其他行为,都要写上

代码示例:

public class User {private String username;private String password;private String email;private String gender;private int age;//空参构造方法public User() {}//带全部参数的构造public User(String username, String password, String email, String gender, int age) {this.username = username;this.password = password;this.email = email;this.gender = gender;this.age = age;}//get和setpublic String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}

http://www.xdnf.cn/news/16705.html

相关文章:

  • 自动调优 vLLM 服务器参数(实战指南)
  • 如何用USRP捕获手机信号波形(下)协议分析
  • 怎么理解使用MQ解决分布式事务 -- 以kafka为例
  • 小白学OpenCV系列1-图像处理基本操作
  • 机器学习-十大算法之一线性回归算法
  • gTest测试框架的安装与配置
  • Qt 并行计算框架与应用
  • 项目优化中对象的隐式共享
  • 从单机架构到分布式:Redis为何成为架构升级的关键一环?
  • 【开源项目】轻量加速利器 HubProxy 自建 Docker、GitHub 下载加速服务
  • Less Less基础
  • Docker学习相关视频笔记(二)
  • 负载均衡、算法/策略
  • ROUGE-WE:词向量化革新的文本生成评估框架
  • Java 9 新特性解析
  • 考古学家 - 华为OD统一考试(JavaScript 题解)
  • 算法第29天|动态规划dp2:不同路径、不同路径Ⅱ、整数拆分、不同的二叉搜索树
  • uipath数据写入excel的坑
  • Python 程序设计讲义(25):循环结构——嵌套循环
  • 《Spring Cloud Gateway 深度剖析:从核心原理到企业级实战》
  • WAIC 2025观察:昇腾助力AI融入多元化生活场景
  • 理解Transformer解码器
  • Github 连接救星,完全合规合法,无风险!
  • 操作系统-lecture2(操作系统结构)
  • 微服务 01
  • Objective-c 初阶——异常处理(try-catch)
  • Typecho handsome新增评论区QQ,抖音,b站等表情包
  • 用FunASR轻松实现音频转SRT字幕:完整脚本与解析
  • iOS仿写 —— 计算器
  • Python 程序设计讲义(28):字符串的用法——格式化字符串