• Java笔记六(面向对象:类与对象)


    面向对象编程的本质:以类的方式组织代码,以对象的组织(封装)数据

    抽象

    三大特征:封装 继承 多态

    从认识角度考虑是先有对象后有类。对象,是具体的事物。类,是抽象的,是对对象的抽象。

    从代码运行角度考虑是先有类后有对象。类是对象的模板

     

    静态方法与非静态方法的区别

     静态方法:

     

     非静态方法:

     

     

    使用new关键字创建对象:

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

    1. package com.oop.demo02;
    2. public class Student {
    3. //属性:字段
    4. String name;//默认值为null
    5. int age;//默认值为0
    6. //方法
    7. public void study(){
    8. System.out.println(this.name+"在学习");
    9. }
    10. }
    1. package com.oop.demo02;
    2. public class Application {
    3. public static void main(String[] args) {
    4. //类:抽象的,实例化
    5. //类实例化后会返回一个自己的对象
    6. //student对象就是一个Student类的具体实例
    7. Student xiaoming=new Student();//对象
    8. Student xiaohong=new Student();//对象
    9. xiaoming.name="小明";
    10. xiaoming.age=3;
    11. System.out.println(xiaoming.name);
    12. System.out.println(xiaoming.age);
    13. xiaohong.name="小红";
    14. xiaohong.age=4;
    15. System.out.println(xiaohong.name);
    16. System.out.println(xiaohong.age);
    17. }
    18. }

     构造器

     

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

    1.必须和类的名字相同

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

    无参构造:

    1. package com.oop.demo02;
    2. public class Application {
    3. public static void main(String[] args) {
    4. //new实例化了一个对象
    5. Person person=new Person();
    6. System.out.println(person.name);
    7. }
    8. }

     

    1. package com.oop.demo02;
    2. public class Application {
    3. public static void main(String[] args) {
    4. //new实例化了一个对象
    5. Person person=new Person();
    6. System.out.println(person.name);
    7. }
    8. }

    有参构造  

    1. package com.oop.demo02;
    2. public class Application {
    3. public static void main(String[] args) {
    4. //new实例化了一个对象
    5. Person person=new Person("jiawei");
    6. System.out.println(person.name);
    7. }
    8. }
    1. package com.oop.demo02;
    2. public class Person {
    3. //一个类即使什么都不写,它也会存在一个方法
    4. //显示的定义构造器
    5. String name;
    6. //实例化初始值
    7. //1.使用new关键字,本质是在调用构造器
    8. //2.用来初始化值
    9. public Person(){//默认构造器
    10. }
    11. //有参构造:一旦定义了有参构造,无参就必须显示定义
    12. public Person(String name){//重载
    13. this.name=name;
    14. }
    15. }

     IDEA快捷键:alt+Ins:快速生成构造器

     

     

     

    构造器的作用:

    1.new本质在调用构造方法

    2初始化对象的值

    注意:定义有参构造之后,如果想使用无参构造,显示的定义一个无参的构造

    创建对象内存分析:

    示范代码  

    1. package com.oop.demo03;
    2. public class Pet {
    3. String name;
    4. int age;
    5. public void shout(){
    6. System.out.println("叫了一声");
    7. }
    8. }

     

    1. package com.oop.demo03;
    2. public class Application {
    3. public static void main(String[] args) {
    4. Pet dog=new Pet();
    5. dog.name="旺财";
    6. dog.age=3;
    7. dog.shout();
    8. System.out.println(dog.name);
    9. System.out.println(dog.age);
    10. Pet cat=new Pet();
    11. }
    12. }

     示例内存图:  

    类与对象总结

    1.区别:类是一个模板,抽象,对象是一个具体的实例

    2.属性:默认初始化:

    数字:0 0.0

    char:u0000

    boolean:false

    引用:null

    修饰符 属性类型 属性名=属性值!

    3.对象的创建和使用

    必须使用new关键字创造对象,构造器 Person jiawei=new Person()

    对象的属性——————————————jiawei.name

    对象的方法——————————————jiawei.sleep()

  • 相关阅读:
    猿创征文 |【MySQL数据库一SQL 语句】
    2024年第16周技术复盘
    C++ “&”
    为何建议房企开发楼盘小程序?
    UG\NX二次开发 仿射变换(未缩放向量与缩放向量相加) UF_VEC2_affine_comb
    [HDLBits] Countbcd
    【Shell脚本5】Shell数组
    传输层 TCP 拥塞控制(1):慢启动
    PTA 7-92 简化的插入排序
    golang中常用的空接口数据类型转换方法
  • 原文地址:https://blog.csdn.net/m0_73770225/article/details/133525986