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

1.面向对象思想

举例
洗衣服:

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

2.类与对象

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

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

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

3.1类的定义格式:

public class ClassName {
  //成员变量
  //成员方法
}

例:创建一个学生类

public class Student {
   //成员变量  
   String name;//姓名  
   int age;//年龄
   
   //成员方法
   //学习的方法
   publicvoid study() {
   System.out.println("好好学习,天天向上");
  }
  //睡觉的方法
  publicvoid sleep() {
    System.out.println("睡觉");
  }
}

3.2对象的使用
创建对象

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

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

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

例:

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

4.练习:类和对象

Phone类

public class Phone {
  // 成员变量
  String brand; //品牌
  int price; //价格
  String color; //颜色
  // 成员方法
  //打电话
  public void call(String name) {
    System.out.println("给"+name+"打电话");
  }
  //发短信
  public void sendMessage() {
    System.out.println("发短信");
  }
}

测试类(main)

扫描二维码关注公众号,回复: 11585101 查看本文章
public class Test02Phone {
  public static void main(String[] args) {
    //创建对象
    Phone p = new Phone();
    //输出成员变量值
    //没有赋值,所以初始值是基本数据类型的"默认值"
    System.out.println("品牌:"+p.brand);//null
    System.out.println("价格:"+p.price);//0
    System.out.println("颜色:"+p.color);//null
    System.out.println("‐‐‐‐‐‐‐‐‐‐‐‐");
     //给成员变量赋值
    p.brand = "iphone 8";
    p.price = 4999;
    p.color = "玫瑰金";
    //再次输出成员变量值
    System.out.println("品牌:"+p.brand);//iphone 8
    System.out.println("价格:"+p.price);//4999
    System.out.println("颜色:"+p.color);/玫瑰金
    System.out.println("‐‐‐‐‐‐‐‐‐‐‐‐");
    //调用成员方法
    p.call("柳岩");//给柳岩打电话
    p.sendMessage();//发短信
  }
}

5.封装

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

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

private的使用格式

private 数据类型 变量名 ;

例:

public class Student {
  private String name;
  private int age;
}

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

public class Student {
  private String name;
  private int age;
public void setName(String name) {
    //name = name;
    this.name = name;
  }
  public String getName() {
    return name;
  }
  public void setAge(int age) {
    //age = age;
    this.age = age;
  }
  public int getAge() {
    return age;
  }
}
public class Test02Phone {
  public static void main(String[] args) {
    //创建对象
    Student s = new Student ();
    s.setName= "张三";
    s.setAge = 18;
    //再次输出成员变量值
    System.out.println("姓名:"+s.getName);//张三
    System.out.println("年龄:"+s.getAge);//18
  }
}

6.构造方法

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

构造方法的定义格式

修饰符 构造方法名(参数列表){
// 方法体    
}
public class Student {
  private String name;
  private int age;
  // 无参数构造方法
  public Student() {}
  // 有参数构造方法
  public Student(String name,int age) {
    this.name = name;
    this.age = age;
  }
}

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

7.完整的代码

学生类

public class Student {
  //成员变量
  private String name;
  private int age;
  //构造方法
  public Student() {}
  public Student(String name,int age) {
    this.name = name;
    this.age = age;
  }
  //成员方法
  publicvoid setName(String name) {
    this.name = name;
  }
  public String getName() {
    return name;
  }
  publicvoid setAge(int age) {
    this.age = age;
  }
  publicint getAge() {
    return age;
  }
}

测试类(main)

public class TestStudent {
  public static void main(String[] args) {
    //无参构造使用
    Student s= new Student();
    s.setName("柳岩");
    s.setAge(18);
    System.out.println(s.getName()+"‐‐‐"+s.getAge());
    //带参构造使用
    Student s2= new Student("赵丽颖",18);
    System.out.println(s2.getName()+"‐‐‐"+s2.getAge());
  }
}

猜你喜欢

转载自blog.csdn.net/Mrxuanshen/article/details/107979023