Java学习第五天 1、类的使用Java的面向对象1.1面向对象的基础概念面向过程面向过程指的是每次需要某个功能的时候都需要将功能重新编写一次。----早期的时候很多程序采用的都是面向过程这种方式会产生维护困难、需求不容易修改、功能扩展不方便等问题面向对象提前把特定的功能封装好放到类的方法中将来通过类的对象直接调用方法就可以完成方法的复用这种方法维护简单功能扩展比较容易但是消耗较高需要创建对象1.2面向对象核心知识点类、对象类类是对象的抽象对象对象是类的实例化1.3类和对象的语法类的写法类没有main方法即psvm1、类型2、属性3、方法publicclass 类名{//描述什么类型就写什么类名//属性数据类型 变量名属性名就是变量名数据类型 属性名数据类型 属性名//功能方法public 返回值类型 方法名{}public 返回值类型 方法名{}}package com.day3.text1; public class Computer { //属性 String brand; String color; double price; //功能方法 public void play() { System.out.println(电脑可以玩游戏); } public void code () { System.out.println(电脑可以写代码); } }对象的创建对象有main方法即psvm创建类的目的是为了编写一些方法将来可以多次调用方法执行特定的业务逻辑如果想调用类的方法就必须创建类的对象创建对象创建变量对象名就是变量名语法数据类型 对象名new 数据类型( );通过对象调用方法对象名.方法名通过对象调用属性对象名.属性名值 //赋值对象名.属性名 //获取值获取属性System.out.println(对象名.属性名);注意类的属性也称成员变量使用时即使没有赋值系统也会提供一个默认值可以使用引用类型包含String默认值是null整数类型默认值是0浮点数类型默认值是 0.0char 类型 默认值是 boolean 类型默认值是 falsepackage com.day3.text1; import com.day3.text1.Computer; public class ComputerText1{ public static void main(String[] args) { Computer computernew Computer();//Computer是一个引用数据类型 computer.play(); computer.code(); computer.brand华硕; computer.color黑色; computer.price7999; //获取属性也是通过对象.属性名获取 System.out.println(computer.price); System.out.println(computer.color); System.out.println(computer.brand); } }1.4类的混合使用例题单独创建包包中创建一个教师类有姓名、年龄、职称、课程类 四个属性类中有一个 show 方法输出的内容是 我是 一个老师我的姓名是: xx年龄是 xx职称是 xx我教授的课程名是 xx这门课有 xx 课时xx 学分package com.day3.text2; public class Teacher { String name; int age; String professional; Course c;//获取值 public void show(){ System.out.println(我是一个老师我的姓名是name,年龄是age ,职称是professional,我教授的课程名是 c.cname,这门课有c.time课时,c.score学分); } }package com.day3.text2; public class TeacherText1 { public static void main(String[] args) { Teacher tnew Teacher(); t.name李四; t.age24; t.professional高级教师; t.cnew Course();//将new Course()赋值给t.c(即在teacher中的Course c;)t.c是变量的命名 t.c.cname高数; t.c.time48; t.c.score3; t.show(); } }package com.day3.text2; public class Course { String cname; int time; int score; }重点代码理解在教师类包含课程类中课程作为属性所以需要在教师类中加入代码Course c;即数据类型 对象名并且在教师类方法里面关于课程的输出内容变成c.cname...注意不是t.c.cname在教师对象中属性是一个类的赋值方式, 需要创建一个对象赋值给属性t.cnew Course();//赋值给t.ct.c是变量的命名t.c.cname高数;t.c.time48;t.c.score3;1.5类在内存中的划分①编写的 .java 文件被编译为.class 文件 会被 JVM 加载到方法区②当执行Computer computer new Computer();的时候 会先在堆区创建空间同时把方法区的属性、方法引用加载到空间中把这个空间地址赋值给 栈区的computer③当我们执行后续的赋值操作computer.brand华硕;通过computer的引用地址倒找堆区的空间把空间中的属性去赋值④当我们调用方法computer.play(); 就会将方法加载到栈中按照先进后出的规则去存放⑤程序执行结束栈中的方法会按照先进后出的规则出栈结束运行堆中的对象则会被系统的垃圾回收器回收1.6成员变量和局部变量的区别①成员变量在类中方法外中声明局部变量在类中方法内中声明②成员变量使用不需要赋初始值系统会给默认值 局部变量必须要赋初始值才能使用③成员变量在堆中局部变量在栈中④成员变量随着对象的回收而消失局部变量随着方法的出栈而消失1.7构造方法重要构造方法的作用构造方法是和new关键字一起出现来创建类的对象使用的public class Person { String name; int age; //构造方法无参构造 public Person(){ } //有参构造 public Person(String name,int age){ } }特点①构造方法的方法名和类名完全相同没有返回值类型②如果类中没有编写构造方法那么系统会自动提供一个没有参数的构造方法有参数构造和无参数构造不能同时出现③构造方法可以写参数一般写上的参数参数名称一般和类的属性相同主要是为了完成创建对象的同时给属性赋值调用无参构造可用于赋值数据类型 对象名new 数据类型( );调用有参构造可用于赋值数据类型 对象名new 数据类型( 内容内容内容 );//第一种情况 Person personnew Person(); String name张三; int age12; //第二种情况 Person personnew Person(张三,12);