Java笔记(六)——类和对象(上) 类的定义 / 初始化 / toString
- 1 类和对象的初步认识
- 1.1 主观理解
- 1.2 代码/语法的角度
- 2 类的定义和使用
- 2.1类的定义、实例化
- 2.2 常见的类定义错误
- 3 类的成员
- 3.1 成员变量/属性/字段
- 3.2 方法
- 4 对象的初始化
- 4.1 默认值
- 4.2 就地初始化
- 4.3 代码块初始化
- 4.4 构造方法初始化
- 5 toString
1 类和对象的初步认识
Java是一门纯面相对象的语言(Object Oriented Program)
1.1 主观理解
对象、类:表示具体问题中针对一些事物的抽象,所谓抽象就是用代码来表示现实中的东西。
可以将类和对象想象成模具和点心:
类 -->模具
对象 -->点心
我们通过这一猫爪模具可以做出很多猫爪小点心,这个猫爪模具就是一个类,这些猫爪小点心就是对象。
有各种各样的模具,通过不同的模具可以做出不同的点心,也就是说由各种类可以创建很多对象。
1.2 代码/语法的角度
类:自定义类型 (高配结构体)
对象:自定义类型创建出来的变量
2 类的定义和使用
2.1类的定义、实例化
类,相当于把现实事物中的属性和行为结合到一起。
class Cat { public String name;//名字public int age;//年龄public String color;//颜色public double weight;//体重public String gender;//性别 //猫的行为,即方法public void barks() {System.out.println("mewing,mewing");}public void jump() {System.out.println("jump,jump");}
}
有了类后,需要根据类创建出具体的对象。这个操作也称为“实例化”。对象(object)等价于 实例(instance)
Cat cat1= new Cat();
Cat cat2= new Cat();
Cat cat3= new Cat();
//这是三个不同的对象
//同一个类,可以创建出很多个实例
注意:
创建好对象/实例之后,最核心的操作就是访问成员(通过" . "操作)。所谓成员是指:成员变量(属性)和成员函数(方法)
Cat cat= new Cat();cat.name = "糯米";System.out.println(cat.name);cat.eat("鱼");
2.2 常见的类定义错误
(1) 同一个包里面,不能有两个相同的类;不同包里可以有同名的类。
class TestDemo {}public class TestDemo {public static void main(String[] args) {System.out.println("hello");}}
(2) 修改public 修饰的类时要注意
a .java文件名要和public 类名一致,为什么呢,因为这样虚拟机在相应路径找到相应类对应的字节码文件比较方便。
b 编译器在编译时,针对一个 .java源代码文件,只会接受一个public 类。
因此,修改public 修饰的类名时,最好右击该类通过 Refactor => Rename 的方式修改。就能同时修改文件名和类名,以及在程序中用到此类的地方。(小技巧:shift + F6可以触发refactor 功能,同时修改文件名和类名,以及在程序中用到此类的地方)
3 类的成员
3.1 成员变量/属性/字段
成员变量:在类中,但是在方法的外面,就叫做成员变量/属性/字段。可以就地初始化,给它赋一个值,也可以先不赋值,有默认初始值。(最好初始化)
public String name;public String gender;public int age;public String breed;public String color;
注意:
1、使用 . 访问对象的成员;
2、“访问” 既包含读, 也包含写;
3、对于一个对象的字段如果没有显式设置初始值, 那么会被设置一个默认的初始值。各种类型的默认初始值不同,在下面的4.1 节中会具体讨论。
3.2 方法
1、方法:用于描述一个对象的行为。
方法中的属性为局部变量。
public void eat(String food){System.out.println(name+"正在吃"+food);
}public void sleep(){System.out.println(name+"正在睡觉");
}
2、方法中有一种特殊的方法叫做 构造方法:
在实例化对象的时候会被自动调用到的方法, 方法名字和类名相同, 用于对象的初始化 。虽然我们前面已经能将属性就地初始化, 但是有些时候可能需要进行一些更复杂的初始化逻辑, 那么就可以使用构造方法。
4 对象的初始化
写代码时,但凡是创建变量,最好初始化。
对象初始化的方式:
4.1 默认值
不同类型默认值不同
我们可以通过运行看到它们的默认值
public int a;
public long b;
public byte c;
public double d;
public boolean e;
public char f; // 空格 \u000 unicode码
public String g; //引用类型初始值为null
public int[] h;
规则:
1、数字默认初始值为0
2、boolean默认初始值是false
3、引用类型默认初始值是null
4.2 就地初始化
即定义时就给定初始化的值
public int a = 100;
4.3 代码块初始化
大括号中的就是代码块,会在new对象时自动执行。代码初始化和就地初始化是同一级别,哪个先出现哪个先执行。
public int a=100; //先执行
{a = 0; //后执行,为最终结果
}
所以最后结果为 a = 0。
4.4 构造方法初始化
1、构造方法的特殊之处:
(1) 构造方法的方法名固定,必须和类名相同;
(2) 构造方法不需要return 语句,但可以理解成返回了该对象的引用
(3) 构造方法不需要显示调用,而是在new 的时候自动被调用
(4) 构造方法支持重载,重载规则和普通方法一样
2、构造方法的使用:
(程序员直接给出,用户不能修改)
Alt + insert 触发 Generate可以自动创建构造方法
3、this的使用:
(1) this 指向当前对象的引用;
(2) this 的类型就是当前这个类的类型;
(3) this 这个引用的指向不能修改;
(4) this 也可以用来调用方法;
(5) this 不能是null。
public class Cat {String name;String gender;public Cat(String name, String gender) {this.name = name;this.gender = gender;this.eat("鱼");}public void eat(String food){System.out.println(name + "正在吃" + food);}
}
4、由用户输入对其属性进行定义(与上面的代码可以并存,重载)
System.out.println("请输入一个名字:");public Cat(String name){//表示当前对象的引用,相当于“我”//this.name 成员变量;name 当前方法的参数this.name = name;
5、代码块和构造方法的先后顺序
public Cat(){name = "糯米";gender = "公猫";age = 1;breed = "中华田园猫";color = "橘色";
}
{name = "苹果";
}
运行结果为:糯米(先执行代码块,后执行构造方法)
5 toString
1、当我们创建了一个小猫的对象,然后想看这个对象里面是什么时,不能直接打印。
public static void main(String[] args) {Cat cat = new Cat("糯米","公猫");System.out.println(cat);
}
直接打印,会打印出来这样的东西,但是我们想要看到的是里面的内容,比如,小猫的名字、性别。
2、我们在我们创建的Cat 类中可以再加一个toString 方法,这样打印就可以直接打印出里面的内容。
public String toString(){return this.name + "," + this.gender;
}
3、我么还可以借助IDEA来自动生成
类似于上面自动创建构造方法,Alt + insert 触发Generate也可以自动创建toString。打印的也很好看,有一定的格式。
@Override
public String toString() {return "Cat{" +"name='" + name + '\'' +", gender='" + gender + '\'' +'}';
}
Java笔记(六)——类和对象(上) 类的定义 / 初始化 / toString相关推荐
- C++学习笔记-第4单元-对象和类(基础)
C++学习笔记 文章目录 C++学习笔记 第4单元 对象和类(基础) 单元导读 4.1 用类创建对象 4.1.1 对象和类 4.1.2 创建对象并访问 4.2 对象拷贝.分离声明与实现 4.2.1 对 ...
- java类与对象_Java类与对象
类与对象 1,面向对象编程简介 Java语言最大的特点在于面向对象的编程设计,并且面向对象的编程设计也在由于Java自身的发展而不断发展.面向过程编程(C语言).函数式编程(Scala).面向对象编程 ...
- C++(三)——类和对象(上)
构造函数 #include<iostream> using namespace std;class Person { public:int age;Person() {cout <& ...
- 实验四 类和对象;类的继承和派生;多态性; 接口;构造器应用
实验四 类和对象:类的继承和派生:多态性: 接口:构造器应用 一.实验目的 1. 掌握类与对象的关系: 2. 掌握类的定义: 3. 掌握对象的声明及使用: 4. 掌握构造方法的概念及调用时机: 5. ...
- Python的类和对象的介绍,定义类和对象,定义实例方法和属性以及Python中的魔法方法
Day09新手小白学python 第九节 Python的类和对象的介绍,定义类和对象,定义实例方法和属性以及Python中的魔法方法 目录 Day09新手小白学python 前言 一.面向对象介绍 二 ...
- c++类和对象(类的概念)
1.类和对象概念 类:用来对实体(对象)进行描述,对象有什么属性,以及对象具有什么功能是一种自定义类型 对象:现实生活中所存在的 ,对象是对类的具体体现 用类类型创建出来的变量称为对象 2.类的定义 ...
- php函数、类和对象以及类的封装、继承、类的静态方法、静态属性
php函数.类和对象以及类的封装.继承.类的静态方法.静态属性 原文:php函数.类和对象以及类的封装.继承.类的静态方法.静态属性 1.函数 php内置函数可以直接使用,如果没有安装php扩展即可 ...
- C++ 类与对象_类的其他成员(常成员,静态成员,友元)
系列文章目录 重新复习c++,所以把书中的重点内容整理成博客,尽量简洁,易懂. C++ 类与对象_类和对象的定义与访问 (定义类和对象,访问对象成员,this指针) C++ 类与对象_构造函数和析构函 ...
- mysql构造器_类和对象,类的构造器,魔术方法__get()和__set(),mysql连接数据库的方式--2018年8月30日11时38分...
这一节课主要讲的是类和数据库的知识,主要是类和对象,类的构造器,魔术方法__get()和__set(),mysql连接数据库1. 什么是类 ?什么是对象?举例说明 答:类是对象的模板,对象是类的一个实 ...
最新文章
- 1亿级PV网站架构演变
- DevExpress v17.2新版亮点—ASP.NET篇(二)
- Camera服务之--架构浅析
- leetcode-114. Flatten Binary Tree to Linked List
- CCNA-第六篇-静态路由+动态路由开头
- iText报表Java_(例)Java生成PDF报表 iText
- 算法导论 算法_算法导论
- Qt学习之Qt基础入门(中)
- 手把手教用XNA开发winphone7游戏(五)大结局
- 原根(扩展欧几里得+欧拉函数)
- c语言输入相应的成绩评定信息,C语言机练习题记答案.doc
- 2013计算机二级试题,2013年3月全国计算机二级VFP真题
- 《深度学习》 --李宏毅学习导图总结
- [最后几天]蓝桥杯如何优雅控分
- Python常用的软件包
- 6阶子群同构于s3或者z6_顾沛《抽象代数》1.6变换群与置换群习题解答
- centos7系统greenplum5.7集群详细安装配置文档-亲试通过
- 微信公众平台php开发包
- [半监督学习] Combining Labeled and Unlabeled Data with Co-Training
- CST仿真指导 | 如何构建个性化的用户界面