javaSE之类和对象(1)
🍓🍓
文章目录
一丶初识面向对象
面向对象的概念
🍁🍁通俗的理解就是把我们看到的事物都当成一个对象,每个对象都有自己的属性和用途,比如一个冰箱,它的属性就是高度,宽度,容量,它的方法就是,制冷,保鲜等。再比如一头大象,它的属性就是重量,高度等,它的方法就是吃东西或者被装进冰箱等。面向对象编程就是把对象与对象之间的交互与联系表示出来,达到我们想要的效果,再比如想要把大象装进冰箱,首先我们要有两个对象,一个是冰箱一个是大象,通过冰箱的冷藏方法和大象的被装进冰箱的方法之间的交互完成的。
二丶类和对象
1.类
📣📣类:类就是图纸,我们想要得到对象,就需要先构造一个图纸作为模板,然后通过图纸,来获得对象的实例。其中图纸的内容就是属性丶方法丶代码块等.
下面我们如果定义一个类
class People{
int height = 160;
double weight =65;
public void eat(){
System.out.println("吃饭");
}
}
其中class就是定义一个类的标志,people就是这个类的名字,定义在{}内部的height和weight就是 这个的类属性,eat()就是这个类的方法.
2.对象
🌲🌲对象:对象就是将图纸上的内容,给造出来,得到的具体个体,抽象到java语言中,也就是通过类得到一个实例体,我们可以真正的使用这个实例的方法和属性,并且可以修改
public static void main(String[] args) {
People pp = new People();//此处就是实例对象,通过new来得到,pp就是这个对象的名字,People就是这个对象得类
System.out.println(pp.height);
System.out.println(pp.weight);
pp.eat();//使用对象的方法和属性,都是通过'.'的操作来实现
}
对象的实例化,我们可以在类里面进行,也可以在方法里面进行,这里没有限制.
3.值得注意的是:
1.一个类可以实例化多个对象
2.实例化得到的对象会占据实际意义上的物理空间
3.实例化得到的对象,不是同一个对象,即使属性方法完全一样,但是在物理空间中也是两个物体,可以理解为双胞胎或者多胞胎.他们在计算机中占据的地址也是不相同的
4.没有定义静态属性或者静态方法,不能直接操作类,一定要先实例化
三丶类的成员
1.字段/属性/成员变量
📧📧上文我们讲的属性,也可以被称作字段或者成员变量,一般不会严格区分.是用来描述类中包含了哪些属性
1.这里的属性不仅可以包含基本数据类型也可以包含引用数据类型
2.对于一般的属性,我们可以赋值,也可以不赋值.但是比如int类型,不赋值就默认为1,引用型数据类型,默认为null
3.当默认为null的引用型数据出现时,我们要特别注意,如果不小心使用了就会出现空指针异常的错误
class Person {
public String name;
public int age;
}
class Test {
public static void main(String[] args) {
Person person = new Person();
System.out.println(person.name.length()); // 获取字符串长度
}
}
// 执行结果
Exception in thread "main" java.lang.NullPointerException at Test.main(Test.java:9)
4.如果对于在前面添加final修饰的变量,我们就必须要赋值,因为此时这个变量就作为一个常量存在了
2.方法
🍉 🍉 用于描述一个对象的行为,此时我们讲的都是一般方法
方法的构成:
权限修饰符 返回值 方法名(参数) 抛出异常{
方法体;
}
class Person {
public int age = 18;
public String name = "张三";
public void show() {
System.out.println("我叫" + name + ", 今年" + age + "岁");
}
}
class Test {
public static void main(String[] args) {
Person person = new Person();
person.show();
}
}
// 执行结果
我叫张三, 今年18岁
对于同一个类创造出的方法,在不同的实例中也是会有所改变的,只需要改变属性,就能改变方法的结果
Person person2 = new Person();
person2.name = "李四";
person2.age = 20;
person2.show()
// 执行结果
我叫李四, 今年20岁
3.static关键字
🌈🌈static关键字是我们常用的关键字之一,可以修饰
1.修饰属性 此时属性就变成了静态属性
静态属性,对于多个实例化的对象,是共享的,只要改变可这个属性,那么所有对象的该属性都会改变
2.修饰方法 方法就变成了静态方法
静态方法的使用不需要对象的实例化,通过 类.方法名就能使用,对于一些常用的类的方法非常适用,比如Math类里面的很多方法,不需要实例化Math就能使用
3.修饰代码块
4.修饰内部类
3和4等我们讲到的时候在做详细介绍
修饰属性
class TestDemo{
public int a;
public static int count;
}
public class Main{
public static void main(String[] args) {
TestDemo t1 = new TestDemo();
t1.a++;
TestDemo.count++;
System.out.println(t1.a);
System.out.println(TestDemo.count);
System.out.println("============");
TestDemo t2 = new TestDemo();
t2.a++;
TestDemo.count++;
System.out.println(t2.a);
System.out.println(TestDemo.count);
}
}
//输出的结果
//1
//1
//============
//1
//2
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LBaSldhh-1677765252822)(C:\Users\A\Desktop\image-20230302211539490.png)]
修饰方法
class TestDemo{
public int a;
public static int count;
public static void change() {
count = 100;
//a = 10; error 不可以访问非静态数据成员
}
}
public class Main{
public static void main(String[] args) {
TestDemo.change();//无需创建实例对象 就可以调用
System.out.println(TestDemo.count);
}
}
//输出结果:100
👉 👉 值得注意的是
1.使用静态方法,内部可以有静态属性或者其他静态方法,但是不能有没有static修饰的属性和方法
2.使用普通方法,可以在内容使用静态方法和静态属性
因为普通方法和属性的使用和需要构造对象,但是静态方法就没有这个限制,假如没有实例化的对象,直接调用静态方法,其内部还有非静态属性或者方法的话就会出现错误
✍✍这一期初识类和对象结束,下一期重点对方法的重载丶构造方法丶this关键词丶和权限修饰符进行讲解