第五节:java面向对象
三个特征:封装,继承,多态。
开发:找对象,没有对象就创建对象,使用对象,维护对象。
成员变量:
类:对现实生活中事物的描述
对象:实实在在存在的个体。
对象就是在堆内存中用new建立的实体,实体就是用来存储多个数据的,对象有很多个实体,比如年龄,性别,姓名等。凡是用来存储多个数据的我们都叫做实体。
定义类就是在描述事物,就是在定义属性和行为。属性和行为共同成为类中的成员(成员变量和成员方法)
成员变量:作用于整个类中,在堆内存中。
class Car { //描述颜色 String color ="红色"; //描述轮胎数 int num = 4; //运行行为 void run() { System.out.println(color+".."+num); } } class CarDemo { public static void main(String[] args) { //生产汽车。在java中通过new操作符来完成。 //其实就是在堆内存产生一个实体 Car c = new Car(); //c就是类类型变量,类类型变量指向对象 //需求:将车的颜色改成蓝色 c.color = "blue"; //车开始运行 c.run(); } }
匿名对象:两种使用情况:当对对象方法仅进行一次调用时;匿名对象可以作为实际参数进行传递
封装:
人应该有年龄,就需要在Person类中提供对应访问age的方式。之所以对外提供访问方式,就因为可以在访问方式中加入逻辑判断等语句。对访问的数据进行操作,提高代码健壮性。
class Person { private int age; public void setAge(int a) { if(a>0 && a<130) { age = a; speak(); } else System.out.println("feifa age"); } public int getAge() { return age; } void speak() { System.out.println{"age="+age}; } } class PersonDemo { public static void main(String[] args) { Person p = new Person(); //p.age = -20; p.setAge(-40); //p.speak(); } }
构造函数:
- 函数名与类名相同
- 不用定义返回值类型,和void不同的是void是返回值类型不确定。而构造函数根本不需要定义返回值类型。
- 不可以写return语句
对象一建立就会调用构造函数。构造函数的作用:可以用于给对象进行初始化。
为什么需要初始化:现实中的事物只要一出现就具备基本的特性。
当一个类中没有定义构造函数时,那么系统会默认给该类加入一个空参数的构造函数 Person(){} 。
每个对象都有自己不一样的地方,支持重载(构造函数的名称一样参数不同。)。
一个对象建立,构造函数只运行一次。而一般方法可以被该对象调用多次。
构造代码块:
没有函数名更没有返回值类型
this关键字
一般函数不能直接调用构造函数,this语句不能用在一般函数中。