0018 Java学习笔记-面向对象-类的基本要素
类与对象
- 大街上一个个的人,就是一个个对象
- 类是对一群对象的抽象,比如人都有性别、年龄、姓名,都会吃饭、睡觉等。姓名性别可以抽象为变量,吃饭睡觉可以抽象为方法,像下面一样定义个类来形容人
public class Person{
private String name;
private int age;
private String gender;
Person(String n,int age,String gender){
name=n;
this.age=age;
this.gender=gender;
}
public void sleep(int hours){
System.out.println(name+"睡了"+hours+"小时");
}
public void eat(String food){
System.out.println(name+"吃了"+food);
}
}
类的修饰符
- 上面代码第一行的"public"是类的修饰符
- 类的修饰符可以有public、final、abstract
- public或省略:一个.java文件中,可以包含多个类,但最多只能有一个用public修饰,public表示可以被任何一个类访问,省略表示只能被同包下的其他类访问
- final:该类不可被继承,比如java.lang.Math、java.nio.Files
- abstract:表示该类为抽象类;不能创建抽象类的对象;有抽象方法的一定是抽象类,没有抽象方法也可以用abstract修饰为抽象类,不让创建对象
class
- 表明这是一个类
类名
- 上面代码第一行的"Person"是类的名字
- 命名规则:名字有意义;首字母大写+驼峰命名法;单词与单词间不要有分隔符
花括号内部
- 类名后面的花括号内部就是对这个类的属性和行为的描述
- 内部成员间的顺序可以随意
- 一般包括:
- 成员变量:
- 实例变量
- 类变量(静态变量)
- 构造方法
- 方法
- 实例方法
- 静态方法
- 成员变量:
成员变量
- 成员变量描述了一个类所处的状态
- 成员变量的语法格式:
[修饰符] 变量类型 成员变量名 [=默认值]; - 访问权限修饰符:省略、public、protected、private,只能是这四个之一
- private:表示本变量只能在本类中被访问
- 省略:表示本变量能在这个包中被访问
- public:表示本变量对外全部公开,能在本包、其他包中访问
- protected:表示本变量只能在本包+本类的子类(即使在其他包)访问
- 修饰符:static
- 表示这个变量是静态变量,属于类自身
- 没有这个修饰符,则说明这个变量是实例变量,属于创建的对象
- 静态变量存储于方法区;实例变量存储在堆内存
- 修饰符:final
- final修饰变量:表示这个变量的值不能被修改
- fianl修饰实例变量:声明的同时进行初始化,构造对象时赋值,之后不能修改
- final修饰静态变量:也就是final和static联用,该变量为常量,变量名所有字母大写,单词与单词间用下划线隔开,在编译时会用其值替代这个变量。比如Math类的PI和E
- 成员变量名:
- 命名:首字母小写+驼峰命名法;用有意义的名词
- 默认值:
- 如果某个变量,所有的对象都用相同的初始值,就可以在声明变量时直接给其赋值,而不需在构造方法中赋值
构造方法
- 构造方法用于构造类的实例;要创建这个类的实例时,通过new关键字调用构造方法
- 语法格式
[修饰符] 构造器名(形参列表) {方法体} - 权限修饰符:省略、public、protected、private
- 构造器名:与类名相同
- 形参列表:与方法的格式相同
- 注意:
- 构造器没有返回值类型,也没有void
- 如果写了返回值类型或者void,那么就成了个普通方法了,不是构造方法
- 在一个类的内部,可以创建这个类自身的实例
- 一般说来,没有构造方法,就没法创建实例,因此系统会为每个没有写构造方法的类添加一个默认的无参构造方法
- 这个默认无参构造方法创建的对象,其各个实例变量的值为0或null,基本类型为0或0.0,引用类型为null
- 如果写了构造方法,系统就不会提供这个默认无参构造了
方法:
- 方法用于描述一个类的行为或功能
- 方法要么属于类,要么属于方法
- 定义方法的语法格式
[修饰符] 返回值类型 方法名(形参列表){方法体} - 访问权限修饰符:省略、public、private、protected,这四个只能有其一
- 含义与它们修饰变量相同
- 修饰符:abstract、final,二者只能有其一
- abstract:表示该方法为抽象方法,对应的该类为抽象类,不能创建抽象类的对象
- final:表示该类不能被继承,比如Math类
- 修饰符:static
- static修饰的方法为静态方法,是属于类本身的,而不是对象
- 静态方法不能操作对象,因而不能访问实例变量,只能访问到静态变量,也不能调用非静态方法
- 静态方法没有this这个隐式参数
- 通过类名来调用静态方法;通过对象调用静态方法也符合语法,但不推荐
- Math类的方法都是静态方法
- 返回类型:
- 该方法返回的数据的类型,可以是基本类型和引用类型
- 如果不需要返回数据,那就是void
- 方法体中要有有效的return语句,返回对应类型的数据
- 方法名:
- 命名:首字母小写+驼峰命名法;一般用动词开头
- 形参列表:
- 方法名+形参列表:叫做方法的签名,可以区分不同的方法
- 方法名可以重复,只要形参的结构不重复,这叫方法的重载,overload
- 参数的类型和参数的名称之间用空格隔开;多个参数间用逗号隔开
- 调用方法时,得传入对应类型的参数
- 方法体:
- 类的各个要素间,不考虑先后顺序;方法体内部则有严格的顺序了
其他
- int/long/double/float/boolean等都是基本类型
- 类也可以看作一种数据类型,可以用类来定义一个变量,这个类就是引用类型
- static实际上是用于区分成员变量、方法、内部类、初始化块,是属于类本身,还是对象
0018 Java学习笔记-面向对象-类的基本要素的更多相关文章
- 0025 Java学习笔记-面向对象-final修饰符、不可变类
final关键字可以用于何处 修饰类:该类不可被继承 修饰变量:该变量一经初始化就不能被重新赋值,即使该值跟初始化的值相同或者指向同一个对象,也不可以 类变量: 实例变量: 形参: 注意可以修饰形参 ...
- 0013 Java学习笔记-面向对象-static、静态变量、静态方法、静态块、单例类
static可以修饰哪些成员 成员变量---可以修饰 构造方法---不可以 方法---可以修饰 初始化块---可以修饰 内部类(包括接口.枚举)---可以修饰 总的来说:静态成员不能访问非静态成员 静 ...
- 0030 Java学习笔记-面向对象-垃圾回收、(强、软、弱、虚)引用
垃圾回收特点 垃圾:程序运行过程中,会为对象.数组等分配内存,运行过程中或结束后,这些对象可能就没用了,没有变量再指向它们,这时候,它们就成了垃圾,等着垃圾回收程序的回收再利用 Java的垃圾回收机制 ...
- 0028 Java学习笔记-面向对象-Lambda表达式
匿名内部类与Lambda表达式示例 下面代码来源于:0027 Java学习笔记-面向对象-(非静态.静态.局部.匿名)内部类 package testpack; public class Test1{ ...
- Java学习笔记——File类之文件管理和读写操作、下载图片
Java学习笔记——File类之文件管理和读写操作.下载图片 File类的总结: 1.文件和文件夹的创建 2.文件的读取 3.文件的写入 4.文件的复制(字符流.字节流.处理流) 5.以图片地址下载图 ...
- Java学习笔记之---类和对象
Java学习笔记之---类和对象 (一)类 类是一个模板,它描述一类对象的行为和状态 例如:动物类是一个类,动物们都有属性:颜色,动物们都有行为:吃饭 public class Dog { Stri ...
- 0021 Java学习笔记-面向对象-包、构造器
封装 面向对象的三大特征: 封装 继承 多态 封装: 将对象的状态信息隐藏,不允许外部程序直接访问 通过该类提供的方法来访问和操作 有啥用: 隐藏类的实现细节 在方法中加入控制逻辑,限制对成员变量的不 ...
- 0023 Java学习笔记-面向对象-初始化代码块
初始化代码块 在18篇-类的基本要素中说到,类的三大成员:成员变量.构造方法.方法,初始化代码块是类的第4个成员 初始化块用于对类或者对象的初始化, 一个类的初始化块可以有0-多个,按先后顺序执行 跟 ...
- 0029 Java学习笔记-面向对象-枚举类
可以创建几个对象? n多个:大部分的类,都可以随意创建对象,只要内存不爆掉 1个:比如单例类 有限的几个:采用单例类的设计思路,可以只允许创建少数的几个特定的对象:还有就是枚举类. 创建少数几个对象, ...
随机推荐
- 【Java每日一题】20161026
20161025问题解析请点击今日问题下方的"[Java每日一题]20161026"查看 package Oct2016; import java.util.Date; publi ...
- How do you install mysql-connector-python (development version) through pip?
12down votefavorite 8 http://stackoverflow.com/questions/31748278/how-do-you-install-mysql-connector ...
- 51Node 1483----化学变换(暴力枚举)
51Node 1483----化学变换 有n种不同的化学试剂.第i种有ai升.每次实验都要把所有的化学试剂混在一起,但是这些试剂的量一定要相等.所以现在的首要任务是把这些化学试剂的量弄成相等. 有两 ...
- adb 常用命令总结
1. adb / adb -help 使用帮助 2. adb devices 查看连接到电脑的设备 3. adb install example.apk 安装程序 4. adb -s emulator ...
- Tomcat性能调优方案
一.操作系统调优 对于操作系统优化来说,是尽可能的增大可使用的内存容量.提高CPU的频率,保证文件系统的读写速率等.经过压力测试验证,在并发连接很多的情况下,CPU的处理能力越强,系统运行速度越快.. ...
- Java的“友好的”访问指示符(修饰符)
如果根本不指定访问指示符,就象本章之前的所有例子那样,这时会出现什么情况呢?默认的访问没有关键字,但它通常称为"友好"(Friendly)访问.这意味着当前包内的其他所有类都能访问 ...
- java 基础加强--书籍+题目+上机测试
scjp test( 在线测试网站):http://scjptest.com/mock-test.xhtml <SCJP Sun® Certified Programmer for Java™ ...
- WebSocket 学习笔记--IE,IOS,Android等设备的兼容性问题与代码实现
一.背景 公司最近准备将一套产品放到Andriod和IOS上面去,为了统一应用的开发方式,决定用各平台APP嵌套一个HTML5浏览器来实现,其中数据通信,准备使用WebSocket的方式.于是,我开始 ...
- Code First :使用Entity. Framework编程(2) ----转发 收藏
第二章:Code First概览 如果你使用第一.二版的EF框架工作过,你会回想起书中的业务案例:Break Away Geek Adventures, 简称BAGA.BAGA共享了很多像我们这样的奇 ...
- 【NodeJS 学习笔记02】入门资源很重要
前言 在我映像中,异步最早出现与ajax,当时我还在搞.net,然后.net居然出了一个异步的控件...... 虽然我最后知道了他不是异步的......然后,前端异步用得特别多,如果不是异步的程序,你 ...