类与对象的关系

类是一种抽象的数据类型,是对某一类事物的描述,但并不代表具体的事物,如动物与狗的关系,类描述的是某一类事物具备的共同特点

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

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

创建与初始化对象

使用new关键字创建对象

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

package com.zhang.oop.Demo02;
//学生类,类中包含属性和方法
public class Student {
//属性:字段
String name; //未赋值前默认值为null
int age;//未赋值前默认值为0 // 方法
public void study(){
System.out.println(this.name+"在睡觉");//this代表当前这个类
}
}
//以类的方式组织代码 //模板 package com.zhang.oop.Demo02;
//一个项目应该只存在一个main方法
public class Application {//总的测试类 public static void main(String[] args) {
//类是抽象的,需要把它具体的实例化出来
//通过new Student()就可以实例化了,类实例化后会产生一个返回结果(类实例化后返回一个自己的对象)
//student对象就是Student类的一个具体实例
// Student student =new Student();
//类 对象的名字
Student xiaoming =new Student();//类是抽象的模板,通过new关键词可以创建不一样的具体的实例
Student xiaohong =new Student();
xiaoming.name="小明";
xiaoming.age=3;
System.out.println(xiaoming.name);
System.out.println(xiaoming.age);
}
}
//以对象的形式封装数据 //实例

构造器必须掌握

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

  • 必须和类的名字相同
  • 必须没有返回类型,也不能写void
package com.zhang.oop.Demo02;

public class Person {
//一个类即便什么都不写,也会存在一方法(运行生成class文件后,会自动生成一个空的方法),这个方法就是构造方法,即构造器
//那就写点:显示的定义一个构造器
String name;
int age;
//构造器的作用:
//1.使用new关键字,必须要有构造器(new一个对象时,本质是在调用构造器(通过new关键词调用构造方法),程序走完构造器回到new才算实例化完成)
//2.用来初始化值
public Person() {//方法的名字和类的名字相同
//无参构造器 //无返回值,也无void
this.name = "zhang";
} //有参构造:一旦定义了有参构造,无参构造就必须显示定义,也就是当定义了有参构造,还想在new中采用无参的形式(new Person()),就必须显示的定义一个无参构造,也就是你得把无参构造写出来。所以,只要定义了有参构造,你就默认的搞一个无参构造,弄个框架,里面啥也不写
public Person(String name) {
//this.name代表对象本身的name
this.name = name;
//此处name代表参数传递下来的name
} }
//构造方法也是方法,方法是可以重载的,所以当在总的测试类中:Person person=new Person(name "zhang")时,此时根据方法的重载,程序会跳过无参构造器,执行有参构造器的步骤(不懂的话加断点调试观察)
//生成(书写)构造器的快捷键:alt+insert
//当有多个属性,比如:name和age,用这种方法构造多个参数的构造器,调用时如果传多个参数,又是一个重载
//当书写空的构造器时,用快捷键再选择 “select none”即可
/*
package com.zhang.oop.Demo02;
//一个项目应该只存在一个main方法
public class Application {//总的测试类 public static void main(String[] args) {
//new实例化了一个对象
Person person=new Person();
System.out.println(person.name);
}
}
//以对象的形式封装数据 //实例
*/
//总结:回顾构造器
/*
特点
1.和类名相同
2.没有返回值
作用
1.new关键词的时候本质是在调用构造器
2.初始化一些对象的值
注意点
1.定义了有参构造之后,如果想使用无参构造,必须显示的定义一个无参的构造
2.this.~=...
this.~代表当前类的值
=...代表参数传递进来的值 */

类与对象小结

  • 类与对象

类是一个模板,抽象的;

对象是一个实例,具体的

  • 方法

定义、调用

  • 对象的引用

引用类型:除了基本类型(8)之外的类型都是引用类型

​ 对象是通过引用来操作的,引用就是指向对象的地址

  • 对象的属性:字段或成员变量

    默认初始化:数字 默认值为0或0.0

​ char 默认值为u0000

​ boolean 默认值为false

​ 引用类型 默认值为null

​ 属性的定义:

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

(这是java中万能的赋值语句形式)

  • 对象的创建和使用

必须使用new关键字创造对象,必须有构造器

new一个Person,这个Person会返回一个对象Person,对象的名字叫person(随便取)即:=Person person =new Person();

调用对象的属性:person.属性;

调用对象的方法:person.方法名();

静态的属性: 属性

动态的行为: 方法 类=属性+方法

java学习之旅(day.08)的更多相关文章

  1. Java学习之旅开篇:运行机制及环境搭建

    在写这篇博客之前,我想对自己进行简单概括:我从事软件开发工作已经三年多了,并且一直在从事.NET相关项目的开发.为什么突然间想学习Java呢?有以下几个原因: 1. 开发程序三年多来,已经对.NET相 ...

  2. Java学习之旅基础知识篇:面向对象之封装、继承及多态

    Java是一种面向对象设计的高级语言,支持继承.封装和多态三大基本特征,首先我们从面向对象两大概念:类和对象(也称为实例)谈起.来看看最基本的类定义语法: /*命名规则: *类名(首字母大写,多个单词 ...

  3. 第一篇,java学习之旅

    在java的这座殿堂中,我才刚刚推开了大门,就像是在岔路口找到了一条,走向前进java大门的路. 下面是一些java算法的问题 第一题: package project.model; import j ...

  4. Java学习之旅(一):探索extends

    鄙人为兴趣爱好,0基础入门学习Java,有些心得想法,记录于此,与君分享. 然毕竟新手,学识尚浅,错误之处,希望多多指正批评,也是对我最大的帮助! 前言:本篇文章,主要讨论在子类继承父类之后,一些继承 ...

  5. Java学习之旅基础知识篇:数组及引用类型内存分配

    在上一篇中,我们已经了解了数组,它是一种引用类型,本篇将详细介绍数组的内存分配等知识点.数组用来存储同一种数据类型的数据,一旦初始化完成,即所占的空间就已固定下来,即使某个元素被清空,但其所在空间仍然 ...

  6. Java学习之旅基础知识篇:数据类型及流程控制

    经过开篇对Java运行机制及相关环境搭建,本篇主要讨论Java程序开发的基础知识点,我简单的梳理一下.在讲解数据类型之前,我顺便提及一下Java注释:单行注释.多行注释以及文档注释,这里重点强调文档注 ...

  7. 我的java学习之旅--一些基础

    (因为我粗略学过C,C++,Python,了解过他们的一些语法,所以为了使得java的入门更为顺畅,便会忽略一些和C语法相类似的地方,着重点明一些java自己的特色之处.也减轻一下自己写文字的负担.) ...

  8. Java学习之旅(二):生病的狗1(逻辑推导)

    前言:本篇文章属于个人笔记,例化了一些代码,不知是否合理,请指教. 中午看到一位同学的面试题,觉得很烧脑,烧脑不能一个人烧,要大家一起烧. 村子中有50个人,每人有一条狗.在这50条狗中有病狗(这种病 ...

  9. java学习之旅

    jar文件其实就是一个压缩包,里面包含很多class文件(一个class文件是一个类的字节码).方便在网络上传输.可以规定版本号,更容易进行版本控制. var只能在方法内使用,不能用于定义成员变量. ...

  10. 面向对象编程(OOP)的五大特征-java学习之旅(1)

    这是Alan Kay关于第一个成功的面向对象语言SmallTalk的总结: 1.所有的东西都是对象.可将对象想象成一种新型的变量:它保存着数据,但是可要求它对自身进行操作,理论上讲,可从要解决的问题身 ...

随机推荐

  1. Pandas通用函数和运算

    Pandas继承了Numpy的运算功能,可以快速对每个元素进行运算,即包括基本运算(加减乘除等),也包括复杂运算(三角函数.指数函数和对数函数等). 通用函数使用 apply和applymap app ...

  2. RabbitMQ 02 安装

    安装 推荐使用Docker进行安装. 执行如下命令. docker run -d --restart always --name rabbitmq \ -e RABBITMQ_DEFAULT_USER ...

  3. HarmonyOS语言基础类库开发指南上线啦!

      语言基础类库提供哪些功能?多线程并发如何实现?TaskPool(任务池)和Worker在实现和使用场景上有何不同? 针对开发者关注的并发等语言基础类库的相关能力,我们在新推出的语言基础类库开发指南 ...

  4. mysql 在c# EF 中无法生成对象

    正文 1. 创建个vs2013项目,导入EntityFramework.dll. MySql.Data.dll. MySql.Data.Entity.EF6.dll 2. 工具 -> 扩展和更新 ...

  5. JS中通过url动态获取图片大小的方法小结(两种方法)

    很多时候再项目中,我们往往需要先获取图片的大小再加载图片,但是某些特定场景,如用过cocos2d-js的人都知道,在它那里只能按比例缩放大小,是无法设置指定大小的图片的,这就是cocos2d-js 的 ...

  6. 【GDKOI 2024 TG Day2】不休陀螺(top) 题解

    考虑一个卡牌区间怎样才不是"陀螺无限". 一个是费用在打到一半时费用就不够了.考虑构造一个卡牌序列使其尽量能够在打到一半时费用就不够,如何构造呢? 把 \(a_i > b_i ...

  7. k8s集群部署1.28.2版本(无坑)

    Kubernetes-1.28.2 集群介绍及搭建 一.Kubernetes 概述 1.什么是Kubernetes? K8S 的全称为 Kubernetes.用于自动部署.扩展和管理"容器化 ...

  8. 重磅官宣:Nacos2.0发布,性能提升10倍

    简介: ​Nacos2.0 作为一个跨代版本,彻底解决了 Nacos1.X 的性能问题,将性能提升了 10 倍. 作者:席翁 继 Nacos 1.0 发布以来,Nacos 迅速被成千上万家企业采用,并 ...

  9. 【深度】阿里巴巴万级规模 K8s 集群全局高可用体系之美

    简介: 台湾作家林清玄在接受记者采访的时候,如此评价自己 30 多年写作生涯:"第一个十年我才华横溢,'贼光闪现',令周边黯然失色:第二个十年,我终于'宝光现形',不再去抢风头,反而与身边的 ...

  10. 阿里云边缘云全新架构升级,助力CDN操控新体验

    ​简介: 本次升级根据上万企业客户的使用反馈和行业应用特征,从简单开通到个性化定制,从内容分发到边缘计算完整解决方案,对客户侧的使用体验进行了全局梳理和全链路优化,推进边缘云CDN操控革新,并逐步构建 ...