类与对象基础

框架

类与对象

  • 类是一种抽象的数据类型,它是对某一类事物整体的描述/定义,但他不能代表具体的事物
    • 动物,植物,手机,电脑 动物类里就有猫狗等等
    • Person类、Pet类、Car类,这些类都是用来描述/定义某一类具体的事物应该具备的特点和行为的。
  • 对象是抽象概念的的具体实例
    • 张三就是Person类的一个具体实例,张三家的旺财就是Pet类里的一个具体实例
    • 能够体现出特点,展现出功能的是具体的实例,而不是一个抽象的概念。

创建与初始化对象

  • 使用new关键字创建对象
  • 使用new关键字创建的时候,除了分配内存空间之外,还会给创建好的对象 进行默认的初始化 以及对类中构造器进行调用。
    • 构造器必须要掌握!!

构造器

  • 类中的构造器也称为构造方法,是在进行创建对象的时候必须要调用的,(一个类即使什么都不写,也会存在一个方法)并且构造器有以下两个特点:
    1. 必须和类的名字相同
    2. 必须没有返回值类型,也不能写void
  • 写一个Person类
package com.oop.demo02;
//java ----->class
public class Person {  //Person类
   //隐示 :不写 public  Person{}也能被直接调用
    //显示的定义构造器

    String name;
    int age;

    
    /*需要使用快捷键生成一次,所以之前写的放在备注里
    //实例化初始值
  //构造器作用
    //1.使用new关键字,本质是在调用构造器
    //2.构造器一般用来初始化值
    public Person(){    //无参构造器
        this.name = "sheng";
    }

    public Person(String name){   //有参构造:一旦定义了有参构造,无参构造就必须显示定义
        this.name=name;
        //第一个name是当前类的  第二个name是参数传递下来的name 
    }
    */
    
    
    //快捷键alt+insert>constructor,具体方法见下

//有参1
    public Person(String name) {
        this.name = name;
    }
//无参
    public Person() {
    }
//有参2
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}


/*
**测试部分**
public class Application {
    public static void main(String[] args) {
        //使用new关键词实例化一个对象
       // Person person1 = new Person();//如果存在有参构造器,那么要使用的无参构造必须写出来哦
        Person person2 = new Person("sheng");//这时就走有参构造器,这里方法是可以重载的,方法名相同时调用方法是根据参数类型

        System.out.println(person2.name);//未赋值时是null,赋值后是sheng  ,快捷操作person.name.sout回车
        Person person3 = new Person("zhongml", 23);//重载,多传一个参数就能锁定方法
               //这种感觉就像,我要通过Person(类)模板创造一个叫zhongml,年龄23的人,保存在person3里
        System.out.println(person3.age);//23
    }
    }
}
*/



/*
**构造器回顾**
1.和类名相同
2.没有返回值
作用
1.new本质在调用构造方法  Person person3 = new Person("zhongml", 23);
2.初始化对象的值
注意点
1.定义了有参构造之后,如果想使用无参构造,必须显示的定义一个无参的构造
快捷键
alt+insert
注意点
this.当前类的=参数传下来的
 */

须知点

一个项目只存在一个mian方法作为入口
image-20220809195206688
什么叫面向对象的本质:
  • 以类的方式组织代码,以对象的形式组织(封装)数据。图片左侧对照类,右侧对照对象。
    • 一个类作为抽象模板存在,通过new这个类,我们创建出具体的不一样的实例,对上面那就话理解就是:类里是框架的代码,对象是给的具体数据。

image-20220809201947762


如何在out输出目录找到当前原文件的class文件
  • 左上角file>project structure>++add content root>选择out文件>apply
    1. image-20220809203625665
    2. image-20220809203716150
    3. image-20220809203833607

构造器

  • 默认构造器(无参构造)
    • 无参构造:一个类即使什么都不写,也会默认存在一个方法,也能被直接调用。其特点是:
      1. 没有返回值,也没有void
      2. 方法名与类名相同

image-20220809204139139

  • 有参构造

    • 可以通过重载调用构造器
    • 存在有参构造器的时候,再想使用无参构造就要显示的定义构造器,就是写出来无参构造器。

    image-20220810115137826

    • this.name = name;分别是哪一个name ,this.当前类的 =参数传递下来的

image-20220809205726396

image-20220809210245706

构造器的作用
  • 使用new关键字,必须要有构造器,因为其本质是在调用构造器

    Person person3 = new Person("zhongml", 23);后面的字符串,整数类型都是直接调用的有参构造器(方法)的。

    public class Person {  
        String name;
        int age;    
    public Person(String name, int age) {  //有参构造器
            this.name = name;
            this.age = age;
        }
    }
    
  • 用来初始化值


快捷键alt+insert生成有参构造器
  1. alt+insert---->constructor -->ok生成有参构造器

    image-20220809210920627

    image-20220809210952646

  2. alt+insert---->constructor ---->多选----->ok后生成有参构造器 也可多选,重载很多个

image-20220810120649248 image-20220810120456678
快捷键alt+insert生成无参构造器
  1. 快捷键 alt+insert---->constructor ---->select none 生成无参构造器
image-20220809211206661
  • 如何理解student对象就是student类的一个具体实例 Student student = new Student();

    • 其实把student对象这个名字变成 xiaoming对象就好理解 Student xiaoming =new Student();

      这样就是通过new 一个类创建一个具体实例叫xiaoming的对象 ,Student类是该对象的模板。

    • 对象new出来之后就可以调用对象的属性和方法

      • 调用对象的属性 xiaoli.name ="小红"; 或者 student.name = “小之”;
      • 调用对象的方法 xiaoli.study();

image-20220810204502001


  • 两种构造器怎么赋值 ???不确定这样表达对不对

    public static void main(String[] args) {
         //new出第一个宠物dog
            //1.对比处A
            Pet dog = new Pet();//通过new一个Pet调用无参构造,生成一个对象dog
    
            dog.name="旺财";
            dog.age=3;
            dog.shout();
            System.out.println(dog.age);
            System.out.println(dog.name);
        //new出第二个宠物cat
            Pet cat = new Pet();
        //new出第三个宠物dog2
            //2.对比处B
            Pet dog2 = new Pet("大黄", 4); //通过new一个Pet调用有参构造(重载),生成对象dog2
    
        }
    

image-20220810211851160


总结

  1. 类与对象

    • 类是一个模板:抽象
    • 对象是一个具体的实例:具体
  2. 方法

    • 定义
    • 调用
  3. 对象的引用

    • 引用类型 : 8大基本类型,
      • 该类型对象是通过引用来操作的,(图解)栈----->堆(地址)
  4. 属性:字段Filed 或称为 成员变量

    • 默认初始化 有数字的0 0.0 引用:null char :u0000 boolean: false 几大初始值
    • 属性定义
      • 修饰符 属性类型 属性名=属性值 String name;
  5. 对象的创建和使用

    • 必须使用new关键字创建对象 ,要有构造器 Person person1 = new Person();时要有构造器。
    • 调用对象的属性 person1.name
    • 调用对象的方法 person1.sleep();
    • 只有静态的属性 属性

    • 和动态的行为 方法

      image-20220811103829121

封装 继承 多态

posted @ 2022-08-11 11:08  来自土木的一员  阅读(47)  评论(0)    收藏  举报