面向对象(oop)

面向对象(oop)

第一章:设计对象并使用

  1. 什么是面向对象编程:面向:找,拿 ; 对象 : 东西 ;

    简言之:找或拿东西过来编程

  2. 设计类,创建对象并使用

    • 如何设计类

      public class 类名{
          1.成员变量(代表属性,一般名词)
           2.成员方法(代表行为,一般动词)
            3.构造器
             4.代码块
              内部类 
      }
      
    • 创建类的对象

      类名 对象名 = new 类名();

    • 如何创建对象

      访问属性:对象名.成员变量

      访问行为:对象名.方法名(…);

    • 注意:

      1. 类名首字母建议大写,满足“驼峰模式”,不能用关键字,必须是合法标识符,且有意义

      2. 一个java文件中可以定义多个class类,但只能一个类是public修饰,且public修饰的类名必须成为代码文件名。

      3. 成员变量的完整定义格式是:修饰符 数据类型 变量名称 = 初始化值

      public class Student { //生成.class文件
      public String name = “王小二”;
      }
      class Animal{}
      class Dog{}
      // 一个Java文件可以定义多个类,但只能一个类是public修饰,且public 修饰的类名必须成为java代码文件的名称,否则报错
      ~~~

第二章:对象内存图

   1. **垃圾回收:**当堆内存中的对象,没有被任何变量引用时就会被判定为内存中的”**垃圾**“
   2. Java存在自动垃圾回收器,会定期进行清理

第三章: 构造器

  • 构造器的作用

    定义在类中,可以初始化一个类的对象,并返回对象的地址 eg: Car c = new Car()

  • 构造器的格式

    修饰符 类名(形参列表){ 。。。}

    public calss Car{
        ...
            //无参数构造器
            public Car(){
            
        }
        //有参数构造器
        public Car(String n ,double p){
            
        }
    }
    
  • 调用构造器得到对象的格式

    类 变量名称 = new 构造器; Car c = new Car();

  • 分类和作用

    无参数构造器(默认存在):初始化对象时,成员变量的数据均采用默认值。

    有参数构造器:在初始化对象的时候,同时可以接受参数对对象进行赋值。

  • 注意事项

    任何类定义出来,默认就自带了无参数构造器,写不写都有。

    一旦定义了有参数构造器,无参数构造器就没有了,如果还想用无参数构造器,需要手写构造器

第四章:this关键字

  1. this 关键字是什么
    • 可以出现在构造器、方法中

    • 代表当前对象的地址。

    • 用于指定访问当前对象的成员变量、成员方法。

      public class Car{
          String name;
          double price;
          public car(String name,double price){
              this.name = name;
              this.price = price;
          }
      }
      

第五章;:封装

  • 封装的思想
  1. 封装:正确设计对象的属性和方法;
  2. 封装的原则:对象代表什么,就得封装对应的数据,并提供数据对应的行为。
  3. 优点:编程变得简单,有什么事情,找对象,掉方法。需要的时候找就可以了
  • 更好的封装

    1. 对成员变量使用private(私有、隐藏)关键字修饰(private修饰的成员只能在当前类中访问);
    2. 为没跟成员提供配套public修饰的getter、setter方法暴露取值和赋值

第六章:标准JavaBean

  • 一知半解:
  1. JavaBean:称为实体类,对象可以用于在程序中封装数据。
  • 标准JavaBean 满足如下的书写要求:

    1. 成员变量使用private修饰。

    2. 提供成员变量对应的setXxx()/getXxx()方法

    3. 必须提供一个无参构造器;有参数构造器是可写可不屑的。

    4. eg:
      // idea 自动生成成员变量提供成套setter和getter方法
      右键-generate(ALT+insert)-get and setter-按shift+鼠标左点击
      //提供有参数构造器 右键generate-construction(构建)-shift+鼠标点击
      //提供无参数构造器 右键generate-construction(构建)-shift+鼠标点击+选择Selectnone
      package com.itheima.JavaBean;
      
      public class User {
          private String name;
          private int age;
          private char sex;
      
          public User() {//创建无参数构造器
          }
      
          public User(String name, int age, char sex) {//创建有参数构造器
              this.name = name;
              this.age = age;
              this.sex = sex;
          }
      //使用get 和 set的方法
          public String getName() {
              return name;
          }
      
          public void setName(String name) {
              this.name = name;
          }
      
          public int getAge() {
              return age;
          }
      
          public void setAge(int age) {
              this.age = age;
          }
      
          public char getSex() {
              return sex;
          }
      
          public void setSex(char sex) {
              this.sex = sex;
          }
      }
      package com.itheima.JavaBean;
      
      public class Test3 {
          public static void main(String[] args) {
              //    1.无参数构造器创建对象封装一个用户信息
              User u1 = new User();
              u1.setName("虎儿");
              u1.setAge(23);
              u1.setSex('男');
              System.out.println(u1.getName());
              System.out.println(u1.getAge());
              System.out.println(u1.getSex());
      
      
      //        有参数构造器
              User u2 = new User("小明", 22, '女');
              System.out.println(u2.getName() + u2.getAge() + u2.getSex());
          }
      }
      
      

第七章:补充

  • 成员变量和局部变量的区别

在这里插入图片描述

面向对象的综合案例

  • 模仿电影信息展示

在这里插入图片描述

// Movie类
package com.itheima.Demo;

public class Movie {
    //    1.成员变量
    private String name;
    private double score;
    private String actors;

    public Movie() {
    }

    public Movie(String name, double score, String actors) {
        this.name = name;
        this.score = score;
        this.actors = actors;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getScore() {
        return score;
    }

    public void setScore(double score) {
        this.score = score;
    }

    public String getActors() {
        return actors;
    }

    public void setActors(String actors) {
        this.actors = actors;
    }
}

//test 类
package com.itheima.Demo;
/*
* 目标:完成电影信息*/
public class Test3 {
    public static void main(String[] args) {
//        1。设计电影类
//        2.创建3个电影对象,封装电影信息


        Movie[] movies = new Movie[3];
        movies[0] = new Movie("xxx",8.0,"xxx");
        movies[1] = new Movie("神", 6.9, "ddd");
        movies[2] = new Movie("神", 6.9, "ddd");
        for (int i = 0; i < movies.length; i++) {
            Movie m = movies[i];
            System.out.println("电影名:"+m.getName());
            System.out.println("得分:" + m.getScore());
            System.out.println("主演" + m.getActors());
            System.out.println("----------------");
        }
    }
}

    Movie m = movies[i];
          System.out.println("电影名:"+m.getName());
          System.out.println("得分:" + m.getScore());
          System.out.println("主演" + m.getActors());
          System.out.println("----------------");
      }
  }

}








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值