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("打游戏"); } }