Java就是一门面向对象的编程语言
一、类和对象的关系:
类:class就是用来修饰类的
①、描述类中属性的——变量
②、描述类中方法的——方法
对象:代表一个具体的事物
①、可以通过new 关键字来创建一个新的对象(每个对象都会有一个新的地址值)
②、用对应的类型变量来接收这个对象。例如:类型 变量名 关键字 类型()
int i = new int();
③、可以通过对象名来调用该对象的属性和方法,赋值或调用
例如:i.add();
二、对象的内存关系:
java的虚拟机内存空间:堆,栈
堆内存:储存的是对象
栈内存:储存的时对象的引用(对象名)
①、对象名就是一个内存地址,该内存地址指向的就是堆内存中储存的对象
②、每个对象的地址值是不同的。如下图:
三、比较两个对象要用 .equals (比较的是两个对象的地址值)
一个java中可以有多个类。但是只能有一个之类被public修饰,
public class Dome01{
public static void main(String[] args){
}
}
class Dome02{
}
类中的成员
1、成员属性 ——在类中声明的属性,类中成员变量可以被访问权限修饰符 修饰(public,private,protected,static,final等)
class Father{ //声明一个类
String name;//默认的成员
public int age;//公开的成员
protected char sex;//受限制的成员
private double weight;//私有的成员
static double length;//静态属性 - 静态变量
final int abcd = 100;//最终的 - 值不能再改变
}
2、成员方法—— 在类中定义的方法,成员方法可以被访问修饰符修饰
3、static用于修饰类中的成员。就是静态变量/类变量 ,可以描述一些静态资源(共享资源),所有该类的对象或子类都可以共享这个静态资源。
static 修饰的方法,就是静态方法,类方法。静态方法中,只能使用静态成员,不能以任何形 式使用非静态的成员。
class Test{
public static void main(String[] args){
A a = new A();
int k = a.i-2;
System.out.println(k);// 1
A a2 = new A();
System.out.println(a2.i);// 1
//静态变量可以用类名.成员变量来调用
A.i=5;
System.out.println(a.i);// 5
//静态方法可以类名.方法来调用
A.moth01();
}
}
class A{
static int i =3;
public static void moth01(){
}
}
4、final 修饰符-最终的
final修饰符用来修饰变量,变量为最终的变量 称为常量
常量的值不允许修改 ,必须在声明时定量。
测试类:
public class People {
//在这个类中描述人类的特征和行为
/*
* 特征:年龄、姓名。身高、体重
*/
int age;// 描述年龄特征- 属性 是该类事物具有的某种属性
String name;//描述姓名特征
public void eat() {//代表了吃饭的行为
System.out.println("我饿了要干饭");
}
public void sleep() {//代表了睡觉的行为
System.out.println("我困了要觉觉");
}
}
/**
* 声明一个电脑类
* 描述电脑的特征
* 品牌、价格、运行内存、处理器
* 描述电脑的功能
* 开机、关机、是否能上网
*
* 创建电脑对象 - 联想ThinkPad
* 创建电脑对象 - 华硕暗影精灵
*
* 从控制台输入你的预算金额,和需要的内存大小
* 判断可以购买哪台电脑,打印该电脑的所有信息,和功能
*
*/
class Computer{//电脑类
String brand;//品牌
double price;//价格
int memory;//内存大小
String cpu;//处理器
public void open() {
System.out.println("...开机成功");
}
public void close() {
System.out.println("...正在关机");
}
public boolean internet(boolean isNetWorking) {
if(isNetWorking) {
System.out.println("网络链接成功-");
}else {
System.out.println("暂时没有网络链接");
}
return isNetWorking;
}
}