第四节 面向对象
1.类和对象的关系
类:就是对现实生活中事物的描述
对象:就是这类事物的一个实体
2.成员变量和局部变量
成员变量作用于:真个类中
局部变量作用于:函数中或者语句中
成员变量在堆内存中,因为对象的存在,才在内存中存在
局部变量在栈内存存在
3.匿名对象的应用
Car c=new car();
c.num=8;
匿名对象的简化写法
new Car().num=8;
3.1 匿名对象和有名对象有什么不同?
匿名对象调用熟悉没有任何意义,但调用方法有意义!
总结:匿名对象使用方式一 :当对对象的方法只调用一次时,可以用匿名对象来完成,这样写比较简化
如果对一个对象的多个成员调用时,必须给这个对象起个名字
匿名对象使用方式二:可以将匿名对象 作为实际参数进行传递 show(new Car());
4.封装:
是指隐藏对象的属性和细节,仅仅对外提供公共访问方式
好处:
(1)提高重用性
(2)将变化隔离
(3)便于使用
(4)提高安全性
对于一个变量有两种操作,一个是直接赋值,一个是获取
5.构造函数:
对象一建立就会调用与之对应的构造函数
构造函数的作用在于可以对对象初始化
5.1 一个对象建立,构造函数只运行一次。
而一般方法,可以被对象调用多次
5.2 构造代码块定义的是不同对象共性初始化的内容
使用构造代码块,可以提高程序的简介性,不需要在
所有对象里面写出共有的特性
6.this
(1)用来区分局部变量和成员变量
this.name=name // this.name中的name是指对象的name 即成员变量 (堆内存中 ) 而name是指局部变量的name(栈内存中)
(2) 当定义类功能时,该类内部要用到本类对象时,这是用this关键字表示该对象
但凡本类功能内部使用到了本类对象,都用this表示
(3)this 语句在构造函数之间调用
person(String name){
this.name=name;
}
person(String name ,int age){
this(name); //p(name)
this.age=age;
}
class Person
{
Person p=new Person("java",80);
}
(4)this 语句只能在构造函数的第一行,因为初始化要先执行
6.static 关键字
用法:是一个成员,只能修饰成员(成员变量,成员方法),静态修饰的内容被对象共享.
但成员被静态修饰时,就多了个调用方式,除了可以被对象调用外,还可以被类调用.
被 static 修饰的,在内存中存放在方法区(共享区,数据区)
static 的特点:
(1)随着类的加载而加载 ,随着类的消失而消失 ,说明它的生命周期最长//与类共存亡
String name; //成员,变量,也叫实例变量 ,只有当对象创建了,才进入内存中.
static int age; //静态变量,类变量 ,与类存亡,类加载到内存时,它就进入内存.所以说优先于对象存在
(2)优先于对象存在
(3)被所有对象而共享
(4)可以直接被类名而调用
6.1 静态使用注意事项
(1)静态方法只能访问静态成员(方法,变量)
(2)非静态既可以访问非静态,也可以访问静态
(3)静态方法中不可以定义 this ,super 关键字,但是不可以使用 this,因为它优先于对象存在
this 后一般是对象,对象不存在,怎么访问呢!
6.2 静态的利弊:
利:(1)节省内存空间
(2)直接被类名调用
弊:
(1)生命周期过长
(2)访问出现局限性(静态虽好,只能访问静态)
6.3 主函数
主函数是一个特殊的函数
public static void main(String[]ags){}
public :代表函数访问权限是最大的
static :代表主函数随着类的加载就已经存在了
void :代表主函数没有具体的返回值
main:不是关键字,但是是一个特殊的单词,能被jvm识别。
String[]args :函数的参数,代表字符串类型的数组.
主函数是固定格式的:被jvm识别
唯有能改动的是:args 因为它是一个变量名 ,原名arguments//参数的意思