Day06

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);
    }
}
View Code

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);
    }
}
View Code

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);
    }
}
View Code

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");
        }
    }
}
View Code

  封装和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("打游戏");
    }
}
View Code
原文地址:https://www.cnblogs.com/chengxiaofeng/p/10369032.html