当前位置: 代码迷 >> 综合 >> Java day01 面向对象 ---- 基础篇
  详细解决方案

Java day01 面向对象 ---- 基础篇

热度:50   发布时间:2023-12-18 04:46:03.0

目录

一、自定义类

二、创建对象练习

三、成员变量与局部变量

四、匿名对象

五、面向对象的三大特征之继承

六、面向对象练习


一、自定义类

package cn.test.java;
/** 知识梳理* * Java是一种面向对象的语言* C 是一种面向过程的程序设计语言* * 类:本质是对某种类型事物的共同属性与行为的抽取* * 现实中: 对象    -----  类* Java中: 类    -----  对象* * 面向对象的计算机语言的核心思想:找合适的对象做合适的事* * 如何找合适的对象:* 自定义类,通过自定义类来创建对象使用,* 调用sun已经定义好的类* * 自定义类创建对象三个步骤:* 1.自定义类*      Class 类名{*      事物的公共属性     成员变量描述*      事物的公共行为     函数描述*      }* * 2.通过自定义创建对象*  类名 变量名 = new 类名():*  * 3.访问(设置)对象的属性或者对象的功能*   访问对象的属性:对象.属性名*   设置对象的属性:对象.属性 = 数据*   调用对象的功能: 对象.函数名();*   * * */public class Demo01 {public static void main(String[] args) {Car c = new Car();  //调用Car类 或  实例化对象// 设置车对象的属性值c.Name ="BYD";c.Color ="white"; c.Wheel= 4;//访问车属性的属性值System.out.println("CarName:" + c.Name + "  " +"CarColor:" + c.Color + "  " + "Whells:" + c.Wheel);}}
class Car{//事物公共属性使用成员变量描述String Name;  // 名字的属性String Color; // 颜色属性int Wheel;  // 车轮数//事物的公共行为使用函数描述public void run(){System.out.println(Name + "我的车轮飞起来了,,,");}
}

二、创建对象练习

package cn.test.java;
/*需求: 使用java描述一个车与修车厂两个事物, 车具备的公共属性:轮子数、 名字、 颜色 ,还
具备跑的功能行为。跑之前要检测轮子是否少于了4个,如果少于了4个,那么要送到修车厂修理,
修车厂修理之后,车的轮子数要补回来4个。 然后车就继续的跑起来。修车厂: 具备公共属性: 名字、 地址、 电话。公共的行为: 修车。初学者的经典错误:1. 变量在同一个作用域(大括号)上是可以直接访问的。2. 如果一个类要访问另外一个类变量时,那么这时候就只能通过创建对象进行访问。(仅对于目前正确)*/public class Demo02 {public static void main(String[] args) {//创建车对象Car1 c = new Car1();c.Name = "DX";c.Color = "White";c.Wheel = 4;for(int i = 0; i<100; i++){ //调用100次c.run();c.run();}//车轮少一个c.Wheel = 3;c.run();//创建修车厂对象CarFactory F = new CarFactory();F.Name = "Garage";F.Address = "XiangTan";F.Tel = "885258";F.reqair(c);    //c.run();}
}
class Car1{String Name;   //车的名字String Color;  // 车的颜色int Wheel;  // 车轮数public void run(){if(Wheel >= 4){System.out.println("可以正常行驶");}else{System.out.println("不能正常行驶,快去修理厂");}}}
class CarFactory{String Name;String Address;String Tel;public void reqair(Car1 c){if(c.Wheel >=4){System.out.println("告诉你,费了很大力气修好了,给钱");}else{c.Wheel = 4;System.out.println("修好了,给钱!!");	}}
}

三、成员变量与局部变量

  • package cn.test.java;
    /** 知识梳理* * 成员变量与局部变量的区别* 定义位置上的区别:*    成员变量是定义在方法之外,类之内的*    局部变量是定义在方法之内的*    *    *作用上的区别:* 成员变量的作用是描述一类事物的公共属性* 局部变量的作用是提供一个变量给方法内部使用* * 生命周期的区别:*    成员变量是默认的初始值*       数据类型  默认的初始值*       int     0*       float   0.0f*       double  0.0*       boolean false*       char    ''*       String(应用数据类型) null* * 局部变量是没有默认的初始值的,必须要先初始化才能使用。* */public class Dome03 {public static void main(String[] args) {//创建对象Person P = new Person();P.eat();  // 调用方法}
    }
    class Person{String Name;// 成员变量public void eat(){int age; // 局部变量age = 12;for(int i = 0; i < 5; i++){System.out.println("Hello World:" + age);}}
    }
    

四、匿名对象

package cn.test.java;
/** 匿名对象:没有引用类型变量指向的对象称 作匿名对象。* * 需求:使用Java类描述一个学生类* * 匿名对象注意的事项:*   我们一般不会给匿名对象赋予属性值,因为永远无法获取到*   两个匿名对象永远都不可能是同一个对象*   * 匿名对象的好处:简化书写* * 匿名对象的应用场景:* 如果一个对象需要调用一个方法一次的时候,而调用完这个方法之后,该对象就不再使用了,这时候可以使用匿名对象。* * 可以作为实参调用一个函数* */
public class Demo04 {
public static void main(String[] args) {// 创建一个学生对象// Student Stu = new Student();new Student().Name = "狗剩";  // 匿名对象  没有引用类型变量指向的对象   给匿名对象赋的值永远获取不到System.out.println("输出匿名对象的属性:" + new Student().Name); // 返回nullSystem.out.println(new Student() == new Student()); //  "==" 用于引用类型变量时,比较的是内存地址。判断两个 对象是否为同一个对象//两个匿名对象永远都不可能是同一个对象,因为不确定引用类型Student Stu = new Student();Stu.study(); // 对象.方法new Student().study();
}
}
class Student{int Num;  // 学号String Name;public void study(){System.out.println("好好学习,天天向上");}
}

五、面向对象的三大特征之继承

package cn.test.java;
/** 面向对象的三大特征* 封装* 继承* 多态* * 需求:使用Java描述百度网的会员* * 问题:性别有问题??* * 根本原因:由于其他人可以直接操作sex属性。可以对sex属性进行了直接的赋值。* * 封装:* 权限修饰符:权限修饰符 控制变量可见范围* public:公共的  public修饰的成员变量或者方法任何人都可以直接访问。* * private:私有的 。private修饰的成员变量或者方法只能在本类中进行直接访问。* *封装的步骤:*1.使用private修饰需要封装的属性*2.提供一个公共的方法设置或者获取该私有的成员属性*      命名规范:*          set属性名();*          get属性名();*          * 封装不一定要提供get()或者set()方法,根据需求而定* * 规范:在现实开发中一般实体类的所有成员属性(成员变量)都要封装起来** 实体类:用于描述一类事物的类* * 封装的好处:* 1.提高数据的安全性* 2.操作简单* 3.隐藏了实现* */public class Demo05 {public static void main(String[] args) {BaiDu BD = new BaiDu();BD.Name = "狗剩";BD.SetSex("女");BD.Salary =8000;System.out.println("姓名:"+ BD.Name + " 性别:" + BD.GetSex() + " 薪资" + BD.Salary);}}
class BaiDu{public String Name; // 名字   公共属性   成员变量private String Sex; // 性别   私有属性public int Salary;  // 薪资   公共属性//定义一个公共的方法设置Sex属性public void SetSex(String S) {// void表示没有返回值类型if(S.equals("男") || S.equals("女")){//短路或(or)表达1为true则整个表达式为true,不再运算第二个表达是,Sex = S;}else{Sex = "男"; // 默认为男}}//定义一个公共的方法获取Sex属性public String GetSex(){return Sex;}//聊天public void Talk(){System.out.println(Name + "聊得非常开心");}
}

六、面向对象练习

/*
需求: 使用java类描述一个计算器类,计算器具备操作数1, 操作数2 、操作符三个公共 的属性
,还具备计算的功能行为。 要求: 不能直接对操作数1,操作数2,运算符这些属性进行直接 的赋值,要封装起来。 (+ - * /  )根据需求提供get或者set方法。需要提供set方法
*///计算器类
class Calculator{private int num1; //操作数1private int num2;  //操作数2private	char option ; //运算符//提供公共的方法设置属性值....					public void initCalculator(int n1 , int n2 , char o){num1 = n1;num2 = n2;if(o=='+'||o=='-'||o=='*'||o=='/'){option = o;}else{option = '+';	}}//计算的功能public void calculate(){switch(option){case '+':System.out.println("做加法运算,结果是:"+(num1+num2));break;case '-':System.out.println("做减法运算,结果是:"+(num1-num2));break;case '*':System.out.println("做乘法运算,结果是:"+(num1*num2));break;case '/':System.out.println("做除法运算,结果是:"+(num1/num2));break;}}}class Demo6 
{public static void main(String[] args) {//创建了一个计算器对象Calculator c = new Calculator();//设置属性值c.initCalculator(1,2,'a');//调用计算器的计算功能c.calculate();}
}