• 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相关推荐

  1. C++学习笔记-第4单元-对象和类(基础)

    C++学习笔记 文章目录 C++学习笔记 第4单元 对象和类(基础) 单元导读 4.1 用类创建对象 4.1.1 对象和类 4.1.2 创建对象并访问 4.2 对象拷贝.分离声明与实现 4.2.1 对 ...

  2. java类与对象_Java类与对象

    类与对象 1,面向对象编程简介 Java语言最大的特点在于面向对象的编程设计,并且面向对象的编程设计也在由于Java自身的发展而不断发展.面向过程编程(C语言).函数式编程(Scala).面向对象编程 ...

  3. C++(三)——类和对象(上)

    构造函数 #include<iostream> using namespace std;class Person { public:int age;Person() {cout <& ...

  4. 实验四 类和对象;类的继承和派生;多态性; 接口;构造器应用

    实验四 类和对象:类的继承和派生:多态性: 接口:构造器应用 一.实验目的 1. 掌握类与对象的关系: 2. 掌握类的定义: 3. 掌握对象的声明及使用: 4. 掌握构造方法的概念及调用时机: 5. ...

  5. Python的类和对象的介绍,定义类和对象,定义实例方法和属性以及Python中的魔法方法

    Day09新手小白学python 第九节 Python的类和对象的介绍,定义类和对象,定义实例方法和属性以及Python中的魔法方法 目录 Day09新手小白学python 前言 一.面向对象介绍 二 ...

  6. c++类和对象(类的概念)

    1.类和对象概念 类:用来对实体(对象)进行描述,对象有什么属性,以及对象具有什么功能是一种自定义类型 对象:现实生活中所存在的 ,对象是对类的具体体现 用类类型创建出来的变量称为对象 2.类的定义 ...

  7. php函数、类和对象以及类的封装、继承、类的静态方法、静态属性

    php函数.类和对象以及类的封装.继承.类的静态方法.静态属性 原文:php函数.类和对象以及类的封装.继承.类的静态方法.静态属性 1.函数 php内置函数可以直接使用,如果没有安装php扩展即可 ...

  8. C++ 类与对象_类的其他成员(常成员,静态成员,友元)

    系列文章目录 重新复习c++,所以把书中的重点内容整理成博客,尽量简洁,易懂. C++ 类与对象_类和对象的定义与访问 (定义类和对象,访问对象成员,this指针) C++ 类与对象_构造函数和析构函 ...

  9. mysql构造器_类和对象,类的构造器,魔术方法__get()和__set(),mysql连接数据库的方式--2018年8月30日11时38分...

    这一节课主要讲的是类和数据库的知识,主要是类和对象,类的构造器,魔术方法__get()和__set(),mysql连接数据库1. 什么是类 ?什么是对象?举例说明 答:类是对象的模板,对象是类的一个实 ...

最新文章

  1. 1亿级PV网站架构演变
  2. DevExpress v17.2新版亮点—ASP.NET篇(二)
  3. Camera服务之--架构浅析
  4. leetcode-114. Flatten Binary Tree to Linked List
  5. CCNA-第六篇-静态路由+动态路由开头
  6. iText报表Java_(例)Java生成PDF报表 iText
  7. 算法导论 算法_算法导论
  8. Qt学习之Qt基础入门(中)
  9. 手把手教用XNA开发winphone7游戏(五)大结局
  10. 原根(扩展欧几里得+欧拉函数)
  11. c语言输入相应的成绩评定信息,C语言机练习题记答案.doc
  12. 2013计算机二级试题,2013年3月全国计算机二级VFP真题
  13. 《深度学习》 --李宏毅学习导图总结
  14. [最后几天]蓝桥杯如何优雅控分
  15. Python常用的软件包
  16. 6阶子群同构于s3或者z6_顾沛《抽象代数》1.6变换群与置换群习题解答
  17. centos7系统greenplum5.7集群详细安装配置文档-亲试通过
  18. 微信公众平台php开发包
  19. [半监督学习] Combining Labeled and Unlabeled Data with Co-Training
  20. CST仿真指导 | 如何构建个性化的用户界面

热门文章

  1. uniapp 调用原生手机联系人和获取手机联系人
  2. 老师当年的那些“口头禅”,当年未懂诗中味,读懂已是中年时
  3. 短视频+直播源码,强强联手,谁与争锋
  4. 次世代游戏建模完整教程 资深建模师分享年薪50万资料
  5. 三维物体AABB碰撞检测算法
  6. 学习 Policy based design - 读C++设计新思维-泛型编程与设计模式的应用
  7. 控制台打印带颜色的字符
  8. 计蒜客 - T1284 夫子云游(李白喝酒,深搜)
  9. 金优商城:养肝等于养命!春季养肝得到好气色
  10. python 数组方法_Python 数组(Array)