黑马程序员——Java面向对象(一)—面向对象的概述、类与对象的关系、封装

时间:2022-05-18 00:41:55

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------

一、面向对象概述
1、面向对象
面向过程 强调过程,执行者,强调的是功能行为
面向对象 强调对象,指挥者,将功能封装进对象,强调具备了功能的对象。

2、面向对象举例
煎饼果子

3、面向对象思想的特点
A:它是一种更符合人们思考习惯的思想
B:它使复杂的内容简单化
C:它使我们从执行者变成了指挥者

4、面向对象的特点
A:封装
B:继承
C:多态

5、开发的过程:其实就是不断的创建对象,使用对象,指挥对象做事情。

二、类和对象的关系
1、
使用计算机语言就是不断的在描述现实生活中的事物。
java中描述事物通过类的形式体现,类是一组相同属性行为的对象的抽象。
对象即是该类事物实实在在存在的个体。

2、举例:
人就是一个类(是把每一个相同属性行为的对象进行抽取)
人的属性:姓名,年龄,身高,体重等
人的行为:吃饭,睡觉,说话,跑,跳等
而我们就是对象(是实实在在存在的个体),具体每个人叫什么名字,年龄多大,身高多高,体重多重等,吃饭怎么吃,睡觉怎么睡,说话怎么说等


描述任意一类事物就是在描述他的属性和行为

3、如何创建对象
(1)类 对现实世界中事物的描述(成员变量和方法)
(2)对象 现实世界中实际存在具体的个体
(3)对象的使用以及内存图 new

class Person {
String name;
int age;
public void speak() {
System.out.println("我的姓名是:" + name + ",我的年龄是:" + age);
}
}

4、成员变量和局部变量
(1)作用范围
局部变量:方法内public void method(String name) {}
成员变量:类中,对整个类有效{成员变量分为两种一种静态的,一种非静态的}
(2)存储空间
局部变量:栈内存
成员变量:堆内存{静态的成员变量在方法区,非静态的在对象中在堆内存中}
(3)初始化值
局部变量:在使用前必须手动给值
成员变量:jvm默认初始化值。
(4)生命周期区别:
局部变量:随着方法的调用而存在,随着方法调用完毕而消失。
成员变量:随着对象的创建而存在。随着对象的消失而消失。


三、匿名对象
1、当对对象中的功能只执行一次的时候使用。否则,请你使用有名字的对象。
Person p = new Person();
p.show();
p.show();
new Person().show();
new Person().show();

2、用于作为实际参数进行传递。
Person p = new Person();
method(p);
method(new Person());
public static void method(Person p){}

3、是否可以用匿名对象调用属性,是否有意义?

四、封装
1、封装的好处:便于重复使用,安全性高。
2、private权限修饰符

class Demo{
private int age;//把属性私有对外提供公

共的访问方法,可控性提高了

public void setAge(int age){
if(age>0 && age<=200){
this.age = age;
}else {
System.out.println("输入错误");
}
}

public int getAge(){
return age;
}
/*
设置是setXxx要传参数
获取是getXxx要返回值类型,返回值类型和属性一致
*/
}
class DemoTest{
public static void main(String[] args)

{
Demo d = new Demo();
d.setAge(-20);
System.out.println(d.getAge());
}
}
3、this关键字及其使用场景
(1)代表当前对象的引用。使用的时候,谁调用方法,this就代表谁。
(2)什么时候使用this呢?
A:当局部变量和成员变量重名的时候,可以用this进行区分。
B:this调用成员方法
C:构造函数中使用this

this() 必须放在第一行。


五、构造函数
1、用途:用于给对象中属性进行初始化。
(1)格式:类名(){code}
2、特点 你不定义空参数的构造函数,系统会自动给一个空参构造,你定义了构造函数无论是有参还空参的,系统就不再给空参数的了。

六、static关键字
1、静态的意思。可以修饰类的成员(成员变量和成员方法)。
2、静态的特点
A:随着类的加载而加载,生命周期最长。
B:优先于对象存在。
C:被所有的对象所共享。
D:比非静态成员多了一种访问方式。可以通过类名直接调用。建议用类名.调用


3、什么时候使用static
(1)当类中的成员需要被所有对象共享时,用static修饰。不需要被共享时,就不用static修饰。
(2)简单说:共性用static修饰,特性不用static修饰。


六、局部代码块&构造代码块&静态代码块
1、局部代码块 
控制变量的生命周期{int x}
2、构造代码块 
每创建一次对象就执行一次。
3、静态代码块
静态代码块--构造代码块--构造方法。



-------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------