1.Java里边一切皆对象
2.OOP 面向对象的程序/语言(所对应的一些名称:封装 继承 多态)
3.面向对象:关注任务中的对象,不关注其过程
4.类:通过类来描述具体的对象 ,限定了类的成员,一个类可以实例化出多个对象
class 类名->大驼峰
eg:描述一个洗衣机类
class WaterMachine{
//成员属性
public String brand;//品牌
public double weight;//重量
public double height;//高度
//成员方法
public void washClothes( ){
System.out.printfln("洗衣功能");
}
public void dryClothes( ){
System.out.println("脱水功能”);
}
类名大驼峰,方法名/变量是小驼峰
改public类名(即改动文件名)
类的实例化
5.this引用
同样也可以
区分局部变量,局部变量的赋值无法给到成员变量
此时用this.来赋值可以给成员赋值
运行结果
但是多个局部变量是,加或者不加this都可以赋值到成员变量
结果相同
综上:1.形参名与变量成员名相同时,赋值不会给成员变量,成员变量还是0
this.成员变量
this.访问成员方法
this();访问构造方法
举例:登记学生的姓名和年龄,需要使用到this
6.对象的构造及初始化
默认初始化:没有给对象赋值前,默认该类型的初始值
就地初始化:定义的同时赋值(适用于默认对象)
eg: public String name="张三";
public int age=99;
构造方法:
这个方法没有返回值,方法名称和类名是一样的
想产生实际对象,必须要有构造方法,若代码中没有构造方法,编译器会默认提供一个不带参数的构造方法。当构造方法调用完成后,对象才实际产生了。
当同时提供了带参数的构造方法时,编译器会自动屏蔽掉默认的不带参数的构造方法
构造方法可以重载(方法名相同,参数不同)
例如:
this()的使用方法:调用本类中的其他构造方法
举例如下:在不带参数的构造方法中使用,遇到了this()将跳转到带参数的构造方法中去,直到带参数的构造方法执行完成后,再返回执行不带参数的构造方法的剩余语句。
注意:必须放在构造方法里面,并且必须放在第一行。
不能循环调用。
7.封装
面向对象程序三大特征:封装,继承,多态。
封装的概念:对类 内部的实现细节 进行隐藏/封装
对外 只提供一些公开的接口 供其他用户进行访问
权限==》访问修饰限定符来进行修改
访问限定符:
private default(默认的) protected public
private:只能在当前类的内部进行访问
public:是公开的,不管在哪里,都可以访问
可以把包理解为一个文件夹,一个文件夹下不能有两个名称相同的子文件。若想有,则在该文件夹下建立一个新的子文件夹 ,在该子文件夹中添加文件名相同的文件。
创建方法(创建自己的包)
命名包用小写
调用系统的包用 import(联系Scanner的调用),import导入的是具体的类,导入的不是包
注意:当用到 import java.util.*;
就是导入了所有该程序下要调用的包,用到谁时,自动导入谁。
注意:默认包底下的文件可以实例化自己定义的包下的文件,二自己定义的包下的文件不能实例化默认包里的文件。
8.static成员
成员具有的相同的属性,比如一个班的同学,班级就是他们的共同属性
public static classes;称为静态成员变量,也称为类变量
访问用 类名. 访问,静态的不依赖于对象
注意:在静态的方法内部,不能访问非静态的数据成员和成员方法
代码块
执行顺序是固定的,与他们在代码中的先后顺序无关,并且静态代码块只执行一次。
静态代码块:用static修饰的代码块
实例代码块:用{ }括起来的
局部代码块:各种方法
A. t.f=3.0f B.Test.n C.t.m
8.内部类(class类中包含的类)
1.实例内部类/非静态内部类
2.静态内部类: static修饰的
3.局部内部类(很少用):在方法内部定义类,只能在该方法体内使用局部内部类,作用不大。
4.匿名内部类
第15 行:实例内部类中,不能有静态的成员变量。
除非加上final表示成一个常量的形式
public static final int data6=10;
final:
final int A=10;//把A定义为一个常量,不能再对a进行赋值操作(类似于C语言中的const)
一般用final定义常量时,常量用大写字母表示。
同时final不能用于局部的方法内部
即:用static修饰时,实例内部类中可以用final定义常量,不能在局部方法用final中定义常量。
9.成员变量的打印
快捷方式
鼠标右键 (在方法区域)
选择要打印出来的项
直接会生成
运行结果
没有用to String()前,直接打印出成员变量,得到的时地址名。
若是专门写一个打印方法,调用时也非常复杂。
用to String() 最方便简洁