面向对象

面向对象

1、类与对象概念

(1)Java中最基本的单位是类

成员变量:就是事物的属性(就是名词)

成员方法:就是事物的行为(就是动词)

(2)定义类就是定义类的成员

成员变量:和以前定义变量是一样的,但是位置变了,在类中,方法外

成员方法:和以前定义方法一样,去掉static

(3)概念

类:是一组相关的属性和行为的集合

对象:是该类事物的具体体现

举例:类  学生

      对象  具体的某个学生就是一个对象

(4)特征

封装、继承、多态

2、学生类的定义

/**
 * 学生类
 * 属性:姓名,年龄,性别
 * 行为:学习,睡觉
 */

class Student{
    String name;        //姓名
    int age;            //年龄
    int sex;            //性别
    
    public void study(){
        System.out.println("学习的方法");
    }
    
    public void sleep(){
        System.out.println("睡觉的方法");
    }
}

3、手机类的定义

/**
 * 手机类
 * 属性:品牌(brand),价格(price)
 * 行为:打电话(call),发信息(sendMessage),玩游戏(playGame)
 */

class Phone{
    String brand;
    int price;
    
    public void call(){
        System.out.println("打电话");
    }
    
    public void sendMessage(){
        System.out.println("发信息");
    }
    
    public void playGame(){
        System.out.println("玩游戏");
    }
}

4、学生类的使用

(1)使用对象

创建对象并使用,格式:类名 对象名 = new 类名();

(2)使用成员变量

对象名.变量名

(3)使用成员方法

对象名.方法名(……)

public static void main(String[] args) {
        //创建对象格式:类名 对象名 = new 类名();
        Student s = new Student();
        
        //使用成员变量:对象名.变量名
        s.name = "lc";
        s.age = 22;
        s.sex = "女";
        System.out.println(s.name+","+s.age+","+s.sex);
        
        //使用成员方法:对象名.方法名(……)
        s.study();
        s.sleep();
    }
    
}

class Student{
    String name;        //姓名
    int age;            //年龄
    String sex;            //性别
    
    public void study(){
        System.out.println("学习的方法");
    }
    
    public void sleep(){
        System.out.println("睡觉的方法");
    }
}

5、手机类的使用

public static void main(String[] args) {
        //创建对象格式:类名 对象名 = new 类名();
        Phone p = new Phone();
        
        //使用成员变量:对象名.变量名
        p.brand = "vivoxplay5";
        p.price = 2990;
        System.out.println(p.brand+","+p.price);
        
        //调用成员方法:对象名.方法名(……)
        p.call();
        p.sendMessage();
        p.playGame();
    }
    
}

class Phone{
    String brand;
    int price;
    
    public void call(){
        System.out.println("打电话");
    }
    
    public void sendMessage(){
        System.out.println("发信息");
    }
    
    public void playGame(){
        System.out.println("玩游戏");
    }
}

6、成员变量和局部变量的区别

(1)在类中的位置不同

成员变量:在类中,方法外

局部变量:在方法定义中或者方法声明上

class Phone{
    String brand;  //成员变量
    
    public void call(int x){
        int a= 10;     //x和a都是局部变量
    }
}

 

(2)在内存中的位置不同

成员变量:在堆内存中(成员变量属于对象,对象进堆内存)

局部变量:在栈内存中(局部变量属于方法,方法进栈内存)

(3)生命周期不同

成员变量:随着对象的创建而存在,随着对象的消失而消失

局部变量:随着方法的调用而存在,随着方法的调用完毕而消失

(4)初始化值不同

成员变量:有默认初始化值

局部变量:没有默认初始化值,必须定义,赋值,然后才能使用

注意事项:

  • 局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的是就近原则。
  • 基本数据类型变量包括:byte,short,int,long,float,double,boolean,char
  • 引用数据类型变量包括:数组,类,接口,枚举

7、方法的形式参数是类名时,调用的方法

public static void main(String[] args) {
        print(10);
        
        Student s = new Student();  //创建对象,并将对象的地址赋值给s
        print(s);
}
    
    public static void print(int x){  //基本数据类型当做形式参数
        System.out.println(x);
    }
    
    public static void print(Student stu){  //引用数据类型当做形式参数
        stu.name = "lc";
        stu.age = 22;
        stu.speak();
    }
    
}

class Student{
    String name;
    int age;
    
    public void speak(){
        System.out.println(name+"..."+age);
    }
}

8、匿名对象的概述和应用

(1)概述:没有名字的对象

public static void main(String[] args) {
        /*Car c1 = new Car();  
        m(c1);*/
        m(new Car());
        
        
        /*Car c2 = new Car();  
        m(c2);    */
        m(new Car());  //匿名对象可以当做参数传递
        
    }
    
    //抽取方法提高代码的复用性
    public static void m(Car cc){
        cc.color = "red";
        cc.num = 8;
        cc.run();
    }
}

class Car{
    String color;  //颜色
    int num;  //轮胎数量
    
    public void run(){
        System.out.println(color+"..."+num);
    }
}

 

posted @ 2019-04-10 18:42  LC97  阅读(220)  评论(0编辑  收藏  举报