Java基础---面向对象思想,类与对象,构造方法,封装

约定不等于承诺〃 2022-11-27 03:21 422阅读 0赞

1.面向对象思想

举例
洗衣服:

面向过程:脱衣服 —>放到盆–>放洗衣粉–>加水–>浸泡–>清洗衣服–>拧干–>晾
面向对象:脱衣服–>放到洗衣机–>按钮–>晾
区别 :
面向过程:强调步骤。
面向对象:强调对象,这里的对象就是洗衣机。

2.类与对象

什么是类
是一组相关属性和行为的集合。
什么是对象
是一类事物的具体体现。
类与对象的关系
类是对一类事物的描述,是 抽象的。
对象是一类事物的实例,是 具体的。
类是对象的模板,对象是类的实体 。

例:
学生类:学号 姓名 性别 年龄
对象: 张三同学 王麻子同学

3.类的定义,对象的使用

3.1类的定义格式:

  1. public class ClassName {
  2. //成员变量
  3. //成员方法
  4. }

例:创建一个学生类

  1. public class Student {
  2. //成员变量
  3. String name//姓名
  4. int age//年龄
  5. //成员方法
  6. //学习的方法
  7. publicvoid study() {
  8. System.out.println("好好学习,天天向上");
  9. }
  10. //睡觉的方法
  11. publicvoid sleep() {
  12. System.out.println("睡觉");
  13. }
  14. }

3.2对象的使用
创建对象

  1. 类名 对象名 = new 类名();

使用对象访问类中的成员:

  1. 对象名.成员变量;
  2. 对象名.成员方法();

例:

  1. public class Demo {
  2. public static void main(String[] args) {
  3. //创建对象格式:类名 对象名 = new 类名();
  4. Student s = new Student();
  5. s.name = "赵丽颖";//赋值操作
  6. s.age = 18;//赋值操作
  7. //输出成员变量的值
  8. System.out.println("姓名:"+s.name); //赵丽颖
  9. System.out.println("年龄:"+s.age); //18
  10. System.out.println("‐‐‐‐‐‐‐‐‐‐");
  11. //调用成员方法
  12. s.study(); // "好好学习,天天向上"
  13. s.sleep(); // "睡觉"
  14. }
  15. }

4.练习:类和对象

Phone类

  1. public class Phone {
  2. // 成员变量
  3. String brand; //品牌
  4. int price; //价格
  5. String color; //颜色
  6. // 成员方法
  7. //打电话
  8. public void call(String name) {
  9. System.out.println("给"+name+"打电话");
  10. }
  11. //发短信
  12. public void sendMessage() {
  13. System.out.println("发短信");
  14. }
  15. }

测试类(main)

  1. public class Test02Phone {
  2. public static void main(String[] args) {
  3. //创建对象
  4. Phone p = new Phone();
  5. //输出成员变量值
  6. //没有赋值,所以初始值是基本数据类型的"默认值"
  7. System.out.println("品牌:"+p.brand);//null
  8. System.out.println("价格:"+p.price);//0
  9. System.out.println("颜色:"+p.color);//null
  10. System.out.println("‐‐‐‐‐‐‐‐‐‐‐‐");
  11. //给成员变量赋值
  12. p.brand = "iphone 8";
  13. p.price = 4999;
  14. p.color = "玫瑰金";
  15. //再次输出成员变量值
  16. System.out.println("品牌:"+p.brand);//iphone 8
  17. System.out.println("价格:"+p.price);//4999
  18. System.out.println("颜色:"+p.color);/玫瑰金
  19. System.out.println("‐‐‐‐‐‐‐‐‐‐‐‐");
  20. //调用成员方法
  21. p.call("柳岩");//给柳岩打电话
  22. p.sendMessage();//发短信
  23. }
  24. }

5.封装

1.使用 private 关键字来修饰成员变量
2.对需要访问的成员变量,提供对应的一对 getXxx 方法 、 setXxx 方法
private的含义

  1. private是一个权限修饰符,代表最小权限。
  2. 可以修饰成员变量和成员方法。
  3. 被private修饰后的成员变量和成员方法,只在本类中才能访问。

private的使用格式

  1. private 数据类型 变量名

例:

  1. public class Student {
  2. private String name;
  3. private int age;
  4. }

getXxx 方法 / setXxx 方法,可以访问成员变量

  1. public class Student {
  2. private String name;
  3. private int age;
  4. public void setName(String name) {
  5. //name = name;
  6. this.name = name;
  7. }
  8. public String getName() {
  9. return name;
  10. }
  11. public void setAge(int age) {
  12. //age = age;
  13. this.age = age;
  14. }
  15. public int getAge() {
  16. return age;
  17. }
  18. }
  19. public class Test02Phone {
  20. public static void main(String[] args) {
  21. //创建对象
  22. Student s = new Student ();
  23. s.setName= "张三";
  24. s.setAge = 18;
  25. //再次输出成员变量值
  26. System.out.println("姓名:"+s.getName);//张三
  27. System.out.println("年龄:"+s.getAge);//18
  28. }
  29. }

6.构造方法

当一个对象被创建时候,构造方法用来初始化该对象,给对象的成员变量赋初始值。

构造方法的定义格式

  1. 修饰符 构造方法名(参数列表){
  2. // 方法体
  3. }
  4. public class Student {
  5. private String name;
  6. private int age;
  7. // 无参数构造方法
  8. public Student() {
  9. }
  10. // 有参数构造方法
  11. public Student(String name,int age) {
  12. this.name = name;
  13. this.age = age;
  14. }
  15. }

无论你与否自定义构造方法,所有的类都有构造方法,因为Java自动提供了一个无参数构造方法,
一旦自己定义了构造方法,Java自动提供的默认无参数构造方法就会失效。

7.完整的代码

学生类

  1. public class Student {
  2. //成员变量
  3. private String name;
  4. private int age;
  5. //构造方法
  6. public Student() {
  7. }
  8. public Student(String name,int age) {
  9. this.name = name;
  10. this.age = age;
  11. }
  12. //成员方法
  13. publicvoid setName(String name) {
  14. this.name = name;
  15. }
  16. public String getName() {
  17. return name;
  18. }
  19. publicvoid setAge(int age) {
  20. this.age = age;
  21. }
  22. publicint getAge() {
  23. return age;
  24. }
  25. }

测试类(main)

  1. public class TestStudent {
  2. public static void main(String[] args) {
  3. //无参构造使用
  4. Student s= new Student();
  5. s.setName("柳岩");
  6. s.setAge(18);
  7. System.out.println(s.getName()+"‐‐‐"+s.getAge());
  8. //带参构造使用
  9. Student s2= new Student("赵丽颖",18);
  10. System.out.println(s2.getName()+"‐‐‐"+s2.getAge());
  11. }
  12. }

发表评论

表情:
评论列表 (有 0 条评论,422人围观)

还没有评论,来说两句吧...

相关阅读