06.05 面向对象(学生类的使用)
A.文件名问题 在Java一个文件夹写两个类:一个基本类,一个测试类 B.如何使用对象 创建对象并使用 格式:类名 对象名 = new 类名() D.如何使用成员变量呢? 对象名.变量名 E.如何使用成员方法 对象名.方法名(...)public class day06_05 { public static void main(String srgsp[]){ Car c1 = new Car(); c1.color="red"; c1.num=4; c1.run(); }}/*车的属性: 颜色 轮胎数车的行为: 车在运行 */class Car{ String color; int num; public void run(){ System.out.println(color+ "..." + num); }}
06.06 面向对象(手机类的使用)
A.学生类06.07 面向对象(一个对象的内存图) A.学生类06.08 面向对象(二个对象的内存图) A.学生类06.09 面向对象(三个引用两个对象的内存图) A.学生类06.10 面向对象(成员变量和局部变量的区别)
A.在类中的位置不同 成员变量:类中方法外 局部变量:方法定义中或者方法声明上 B.在内存中的位置不同 成员变量:堆内存 布局变量:栈内存 C.生命周期不同 成员变量:随着对象的创建而存在 布局变量:随着方法的调用而存在 D.初始化值不同 成员变量:有默认初始化值 布局变量:无默认初始化值,必须定义注意事项: 局部变量名称可以和成员变量名称一样,在方法中使用的时候采用的是就近原则 基本数据类型:byte,short,int.long,float,boolean,char 引用数据类型:数组,类,接口,枚举06.11 面向对象(方法的形式参数是类名的时候如何调用)
A.方法的参数是类名public void print(Student s){}//print(new Student()) 如果你看到一个方法的形式参数是一个类类型(引用类型),这里其实需要的是该类的对象 引用数据类型传递的是地址值。public class day06_11 { public static void main(String[] args) { print(10); Student s = new Student(); //创建对象,并将对象的地址值传递给s print(s); //将s地址传递给下面s(Student s) } public static void print(int x){ //基本数据类型充当形式参数 System.out.println(x); } public static void print(Student s){ //引用数量类型充当形式参数 s.name="张三"; s.age=23; s.speak(); }}class Student{ String name; int age; public void speak(){ System.out.println(name+ "..." +age); }}
06.12 面向对象(匿名对象的概述和应用)
A.什么是匿名对象
没有名字的对象 B.匿名对象的应用场景 a.调用方法 匿名调用的好处:节省代码 注意:调用多次,不适合 b.匿名对象可以作为参数传递 C.案例演示public class day06_12 { public static void main(String[] args) { Car1 c1 = new Car1(); //有名字的的对象 c1.run(); new Car1().run(); //匿名对象调用,不适合多次运行 }}class Car1 { String color; int num; public void run(){ System.out.println("车运行"); }}-----------------------------------------//匿名对象是否可以调用属性并赋值。public class day06_12 { public static void main(String[] args) { new Car1().color="red"; new Car1().num = 8; new Car1().run(); //匿名对象调用,不适合多次运行 }}class Car1 { String color; int num; public void run(){ System.out.println(color+"..."+num); }}
06.13 面向对象(封装的概述)
A.概述 :是指隐藏对象的属性和实现细节,进对外提供公共的访问方式 B.封装的好处 隐藏实现细节,提供公共的访问方式 提高了代码的复用性 提高了安全性 C.封装原则 把不需要对外提供的内容隐藏起来 把属性隐藏,提供公共方法对其访问06.14 面向对象(private关键字的概述和特点) A.人类赋值年龄的问题 B.private关键字特点 是一个权限修饰符 可以修饰成员变量和成员方法 被修饰的成员只能在本类中被访问 C.案例演示public class day06_14_private { public static void main(String[] args) { Person p = new Person(); p.name="张三"; p.age=23; p.speak(); }}class Person{ String name; int age; public void speak(){ System.out.println(name+"..."+age); }}--------------------------------------------------public class day06_14_private { public static void main(String[] args) { Person p = new Person(); p.name="张三"; p.setAge(-17); System.out.println(p.getAge()); }}class Person{ String name; private int age; public void speak(){ System.out.println(name+"..."+age); } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; }// public void setAge(int age) { public void setAge(int a) { if (a>0 && a<200){ age = a; }else{ System.out.println("please goback fireball"); } }}
封装和private的使用
把成员变量用private修饰 提供对应的getxxx和setxxx方法,在方法里可以添加方法进行判断 private仅仅是封装的一种体现形式06.15 面向对象(this关键字的概述和使用)
A.this关键字的特点 代表当前对象的引用 B.案例演示 用来区分成员变量和局部变量的重名06.15 面向对象(手机类代码及其测试) A.学生练习 把手机类写成一个标准类public class Phone { public static void main(String arg[]){ Phone_test p1 = new Phone_test(); p1.setBrand("sanxing"); //设置 p1.setPrice(5288); System.out.println(p1.getBrand() + "..." +p1.getPrice()); p1.call(); //调用成员方法 对象名.方法名 p1.sendMessage(); p1.playGame(); }}class Phone_test{ private String brand; private int price; public String getBrand() { return brand; } public void setBrand(String brand) { this.brand = brand; } public int getPrice() { return this.price; //this 可加可不加 } public void setPrice(int price) { this.price = price; } public void call(){ System.out.println("打电话"); } public void sendMessage(){ System.out.println("发短信"); } public void playGame(){ System.out.println("打游戏"); }}