第一阶段|【第一阶段 day22 面向对象】面向过程 面向对象 类 对象 类与对象的关系 对象创建过程分析 封装 访问控制符


文章目录

  • 1.面向过程
  • 2.面向对象
  • 3.类
  • 4.对象
  • 5.类与对象的关系
  • 6.对象创建过程分析
  • 7.封装
      • 7.1封装属性
      • 7.2封装方法
  • 8.访问控制符

1.面向过程 (1)是一种编程的思想,强调凡事要亲力亲为,每一步都自己来做
2.面向对象 (1)java是一门面向对象的语言
(2)面向对象是一种编程的思想,强调的是结果,我不在意是这样完成的,我在意的是有对象帮我干活
eg:我们想吃饭,不在意是哪个厨师做的,也不在意是哪个骑手送的,只要有厨师做,有骑手送就好
(3)行为习惯,思维方式.比如衣服,没有办法给出一个明确的定义,但是,只要我们看到任何一件衣服,我们就自动把它归类到衣服这个分类中,因为你在过去的生活经验中已经见到太多的衣服
3.类 (1)类是指类型type,用java关键字class来描述
(2)类是一类事物进行抽象总结出来的特征和行为
(3)所以,我们把类看做是一类事物的模板/设计图纸,一类事物具有相同属性和行为的集合
(4)在同一个java文件中可以定义多个class,但是被public修饰的公共类只能有1个.并且这个公共类的名字就是当前java的名字.
(5)类是抽象的,类抽象的描述这一类事物的特征和行为
(6)注意:类在现实事件中,不是真实存在的,只是一种对象的数据类型
4.对象 (1)对象就是根据类创建出来的一个个独立且具体的实例
(2)一个类可以创建出多个对象,对象之间互不影响,我们通过对象唯一的地址值区分对象
(3)用java关键字new来创建
(4)对象具有各种特征,并且每个对象的每个特征都可以有自己的值
(5)对象具有各种行为,每个对象可以执行操作
5.类与对象的关系 (1)类是对象的抽象
(2)对象是类的实体
(3)java是一门面向对象的语言,各种操作都离不开对象
6.对象创建过程分析 Phone p=new Phone();
(1)在堆内存中开辟空间,存放对象
(2)这个对象需要进行初始化
(3)初始化完毕后就会为这个对象生成一个唯一的地址值
(4)在栈内存中开辟一块空间存放引用类型的变量p
成员变量–有默认值 局部变量—没有默认值
(5)将栈内存中对象的地址值交给引用类型的变量p来保存
(6)后续就可以根据p中创建的地址,找到堆中的对象,并对对象做操作
(7)比如说:p.brand=“华为”,"就是根据p中保存的地址,找到对象,并对对象的属性赋值
练习1:创建一个汽车类
package cn.tedu.oop; /** * 本类用于面向对象的入门案例 * 用来设计手机这一类事物 */ /* 1.在同一个java文件中可以定义多个class,但是被public修饰的公共类只能有一个 并且要求这个公共类的名字就是当前java类的名字 */ /**数据结构 * 栈:先进后出 * 队列:后进先出 */ public class TestPhone { public static void main(String[] args) { //4.在main方法中通过new关键字创建Phone对象 //Phone为自定义的引用类型 Phone p1=new Phone(); //5.可以通过手机类的对象p来调用方法 p1.call(); p1.message(); p1.video(); //6.可以通过手机类的对象p来查看属性 System.out.println(p1.brand); //null System.out.println(p1.price); //0.0 System.out.println(p1.color); System.out.println(p1.size); //7.通过new关键字创建手机类的对象p2 Phone p2=new Phone(); //8.通过p2对象设置值 p2.brand="华为"; p2.price=1234.67; p2.color="black"; p2.size=17.9; System.out.println(p2.brand); //华为 System.out.println(p2.price); //1234.67 System.out.println(p2.color); //black System.out.println(p2.size); //17.9} } //1.通过class关键字创建手机类--用来描述手机这一类失误 /* 2.类是抽象的,类抽象的描述这一类事物的特征与行为 特征:品牌,价格,颜色,尺寸 行为:打电话 发短信 看直播 */ class Phone{ //2.通过成员变量描述一类事物的特征/属性/字段---位置:类里方法外 String brand; //品牌 double price; //价格 String color; //颜色 double size; //尺寸//3.通过方法描述一类事物的功能 //方法的格式:修饰符 返回值 方法名(参数列表){方法体} public void call(){ System.out.println("正在打电话"); } public void message(){ System.out.println("正在发短信"); } public void video(){ System.out.println("正在看直播"); } }

7.封装 (1)封装可以提高程序的安全性
(2)封装可以让资源按照我们预先规定的方式来操作(eg:set和get方法)
(3)封装可以提高程序的重用性
7.1封装属性
(1)用private修饰属性
(2)提供这个属性对应的getXxx()和setXxx()方法,外界就可以调用公共的get和set方法操作属性
(3)访问控制符private修饰的资源只能在本类中使用
7.2封装方法
(1)用private修饰方法
(2)在本类的公共的方法里,调用这个私有的方法.外界通过调用公共方法来调用这个私有的方法
练习2:测试面向对象第一个特性:封装
package cn.tedu.oop; /** * 这个类用于测试面向对象第一大特性:封装 */ public class TestPrivate { public static void main(String[] args) { //4.创建学生类对象 Student s1=new Student(); //5.通过对象调用方法 s1.eat(); s1.sleep(); s1.study(); //6.调用属性 System.out.println(s1.getSno()); System.out.println(s1.sname); /** * subject属性在Student类中被private修饰,所以此处无法直接修改或获取值 */ //7.3在main()里操作ssubject属性 System.out.println(s1.getSsubject()); Student s2=new Student(); s2.setSno(123456); s2.sname="xiaobai"; s2.setSsubject("java"); System.out.println(s2.getSno()); System.out.println(s2.sname); System.out.println(s2.getSsubject()); //8.3操作属性sno s2.setSno(123); System.out.println(s2.getSno()); } } //1.描述学生这一类型 /* 属性:学号,姓名,科目 行为:吃饭,睡觉,学习 */ class Student{ //2.属性:学号,姓名,科目 -- 成员变量 //8.1封装属性sno private int sno; //学号 //8.2提供对应的set和get方法 public int getSno() { return sno; }public void setSno(int sno) { this.sno = sno; }String sname; //姓名 /** * private是一个修饰符,被他修饰的资源只能在本类中使用,是权限最小的修饰符 */ //7.1封装ssubject属性 private String ssubject; //科目 //7.2提供一个公共的方式,供外界操作ssubject的属性值 //右键生成get和set方法 public String getSsubject() { /** * 如果一个方法需要返回结果那么这个方法定义的返回值类型就不再是void了 * 具体设置成什么类型,与返回值类型保持一致 * 比如我们要返回的ssubject是String类型,方法的返回值类型就是String * 返回值通过关键字return进行返回 */ return ssubject; }public void setSsubject(String ssubject) { /* 如果一个类中的成员变量与局部变量相同 需要使用this关键字指定,我们规定this指定的那个为成员变量 */ this.ssubject = ssubject; }//3.行为:吃饭,睡觉,学习-- 方法 public void eat(){ System.out.println("正在吃饭"); } public void sleep(){ System.out.println("正在睡觉"); } public void study(){ System.out.println("正在学习"); } }

练习3:OOP综合练习
package cn.tedu.oop; /** * 本类用于练习面向对象2 */ public class TestTeacher { public static void main(String[] args) { //1.创建教师类对象t1 //科目:CGB姓名:小白 System.out.println("教师1:"); Teacher t1=new Teacher(); t1.setName("小白"); System.out.println(t1.getName()); t1.setSubject("CGB"); System.out.println(t1.getSubject()); //2.创建教师类对象t2 //工号:3089 所处部门:java二部 System.out.println("教师2:"); Teacher t2=new Teacher(); t2.setNumber(3089); System.out.println(t2.getNumber()); t2.setDept("java二部"); System.out.println(t2.getDept()); //3.创建教师类对象t3 //姓名:你猜 工号:10086 部门为web教研一部 科目:SCD System.out.println("教师3:"); Teacher t3=new Teacher(); t3.setName("你猜"); System.out.println(t3.getName()); t3.setNumber(10086); System.out.println(t3.getNumber()); t3.setDept("web1教研一部"); System.out.println(t3.getDept()); t3.setSubject("SCD"); System.out.println(t3.getSubject()); } } //1.定义老师类 //1.1属性:姓名,工号,部门,科目,并封装 //1.2功能:备课,上课 class Teacher{ //2.属性 -- 成员变量 //2.1对所有的属性进行封装 private String name; private int number; private String dept; private String subject; //2.2对封装的属性提供设置值和获取值 public String getName() { return name; }public void setName(String name) { this.name = name; }public int getNumber() { return number; }public void setNumber(int number) { this.number = number; }public String getDept() { return dept; }public void setDept(String dept) { this.dept = dept; }public String getSubject() { return subject; }public void setSubject(String subject) { this.subject = subject; }//3.行为--方法 public void ready(){ System.out.println("在备课"); } public void teach(){ System.out.println("在上课"); } }

8.访问控制符 【第一阶段|【第一阶段 day22 面向对象】面向过程 面向对象 类 对象 类与对象的关系 对象创建过程分析 封装 访问控制符】第一阶段|【第一阶段 day22 面向对象】面向过程 面向对象 类 对象 类与对象的关系 对象创建过程分析 封装 访问控制符
文章图片

    推荐阅读