第20天打卡学习

类与对象的关系

类是一种抽象的数据类型,它是对某一类事物整体描述/定义,但是并不能代表某一具体的事物。

动物、植物、手机、电脑...

Person类、Pet类、Car类等。这些类都是用来描述/定义某一具体的事物应该具备的特点和行为

对象是抽象概念的具体实例

张三就是人的一个具体实例,张三家里的旺财就是狗的一个具体实例。

能够体现出特点,展现出功能是具体的实例,而不是一个抽象的概念。

创建与初始化对象

使用new关键字创建对象

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

类中的构造器也称为构造方法,是进行创建对象的时候必须要调用的。并且构造器有以下两个特点:

1.必须和类的名字相同

2.必须没有返回类型,也不能写为void

 package com.oop.demo02;
 //java----->class
 
 public class Person {
 
     //一个类即使什么都不写,它也会存在一个方法
 }
 
类文件
 //
 // Source code recreated from a .class file by IntelliJ IDEA
 // (powered by FernFlower decompiler)
 //
 
 package com.oop.demo02;
 
 public class Person {
     public Person() {
    }
 }
 

 

 package com.oop.demo02;
 //学生类
 
 public class Student {
     //属性:字段
     String name;//默认值null
     int age;//默认值 0
 
 
     //方法
     public void study(){
         //this代表当前这个类
         System.out.println(this.name +"在学习");
    }
 }
 

 

 package com.oop.demo02;
 //一个项目应该只存一个main方法
 
 public class Application {
     public static void main(String[] args) {
         //类:抽象的,实例化
         //类实例化后会返回一个自己的对象
         //student对象就是一个Student类的具体实例!
         //同一个类会产生不同的对象
          Student xiaoming = new Student();
          Student xiaohong = new Student();
 
          xiaohong.name = "小红";
          xiaohong.age = 9;
 
         System.out.println(xiaohong.name);
         System.out.println(xiaohong.age);
 
    }
 }
 

添加out文件

点击右上角的image-20210128092846165--------->再点击Modules------->点击页面右边的Add count root即可添加out文件(class文件)

 

//alt + insert生成有参

//alt + insert--->点select none 生存无参

 package com.oop.demo02;
 //java----->class
 
 public class Person {
 
     //一个类即使什么都不写,它也会存在一个方法
     //显示的定义构造器
     String name;
     //无参构造
     //实例化初始值
     //1。使用new关键字,必须要有构造器,本质是在调用构造器
     //2.构造器用来初始化值
 
     public Person(){
         this.name = "doudou";
 
    }
     //有参构造:一旦定义了有参构造,无参构造就必须显示定义
     public Person(String name){
        this.name = name;
    }
      //alt + insert生成有参
     //alt + insert--->点select none 生存无参
 
 }
 /*
  public class Application {
  public static void main(String[] args) {
  //new 实例化了一个对象
  Person person = new Person();
  System.out.println(person.name);//null
 
 
  }
  }
  构造器:
     1.和类名相同
     2.没有返回值
   作用:
      1.new本质在调用构造方法
      2.初始化对象的值
    注意点:定义了有参构造之后,如果想调用无参构造,必须显示的定义一个无参的构造
    this. :代表当前类
     */
 
 package com.oop.demo02;
 //一个项目应该只存一个main方法
 
 public class Application {
     public static void main(String[] args) {
         //new 实例化了一个对象
          Person person = new Person();
         System.out.println(person.name);//null
 
 
    }
 }
 

 

static和类一起加载

创建对象内存分析

 

 package com.oop.demo03;
 
 public class Pet {
   public   String name;
    public int age;
     //无参构造
     public void shout(){
         System.out.println("叫了一声");
    }
 
 }
 
 package com.oop;
 
 
 import com.oop.demo03.Pet;
 
 public class Application {
     public static void main(String[] args) {
        Pet dog = new Pet();
        dog.name = "旺财";
        dog.age = 3;
        dog.shout();
         System.out.println(dog.name);
         System.out.println(dog.age);
    }
 }

总结

 package com.oop;
 
 
 
 
 public class Application {
     public static void main(String[] args) {
       /*
       1.类与对象
           类是一个模板:抽象。对象是一个具体的实例
        2.方法
            定义:调用!
         3.对应的引用
              引用类型:基本类型(8)
              对象是通过引用来操作的:栈---->堆(真实对象在堆)
          4.属性:字段field 成员变量
          属性会默认初始化:
                  数字:0 0.0
                  char:u0000
                  boolean :false
                  引用:null
          修饰符 属性类型 属性名 = 属性值!
          5.对象的创建和使用
              必须使用new关键字创造对象,构造器 Person kuangshen = new Person();
              对象的属性 kuangshen.name
              对象的方法 kuangshen.sleep()
           6.类:
               静态的属性 属性
               动态的行为   方法
 
 
 
       */
    }
 }

 

posted @ 2021-01-28 10:51  豆豆tj  阅读(43)  评论(0)    收藏  举报