Java基础学习笔记_面向对象1

面向对象
1. 特点:
1)强调的是对象,让我们从执行者变为指挥者;
2)是一种更符合人们思考习惯的思想;
3)可以将复杂额事情简单化;
老师总结:谁拥有数据,谁就对外提供操作这些数据的方法。
典型案例:人在黑板上画圆,列车司机紧急刹车。
2. 局部变量和成员变量的区别
1)作用范围:
局部变量:方法内;
成员变量:类中,对整个类有效;
2)存储空间:
局部变量:栈内存;
成员变量:堆内存;
3)初始化值:
局部变量:在使用前必须手动给值;
成员变量:JVM默认初始化值;
3. 面向对象的特征
封装 (encapsulation)
继承 (inheritance)
多态 (polymorphism)
java中通过new 关键字创建实体,实体就是用来封装具体数据的,如:数组就是,对象也是。
易错题:
class Test {
int num = 10 ;
num = 30; //程序编译错误,此处为出现错误的位置。原因:对类的描述只能是属性和行为,不能是单独的语句。
public void point(){
int num = 20;
}
}
4.匿名对象
匿名对象可以调用属性,但是没有意义,调用后匿名对象会变成垃圾。
匿名对象可以当做参数传递,其实传递的是地址值;
5.封装
概念:隐藏对象的属性的实现细节,仅对外提供公共访问方式。
好处:将变化隔离;便于使用;提高重用性;提高安全性。
原则:将不需要对外提供的内容都隐藏起来,把属性都隐藏,提供公共方法对其访问。
1)private关键字
权限修饰符,用于修饰成员(成员变量和成员函数);
被初始化的成员只在本类中有效;
当成员私有后提高了安全性,但是访问权限降低了,这时可以通过对外提供公有方法的形式对其进行访问。
好处:可以在方法中对成员变量的访问进行控制。
注意:私有成员仅仅是封装的一种体现形式而已。
class Person{ } //在class的前面没有写修饰符,但也是一种修饰符,访问权限比private大。
6. 构造函数
1)特点:
* 方法名必须与类名相同。
* 没有返回值类型,也不能定义为void,在方法名前不声明方法类型。
* 构造方法不能由编程人员调用,而要系统调用。
* 一个类可以定义多个构造方法,也就是构造方法可以重载,以参数个数、类型或排列顺序区分。
构造函数细节:如果在定义类时没有定义构造方法,则编译系统会自动插入一个无参数的默认构造器,这个构造器不执行任何代码。
作用:主要作用是完成对象的初始化工作,它能够把定义对象时的参数传给对象的域。
2)构造函数与一般函数的区别。
从功能上:构造函数是给对象初始化的;一般函数是因为对象需要满足某种功能而定义的。
从执行上:构造函数在对象创建的时候被执行,不用调用;一般函数什么时候调用就什么时候执行,不调用永远不执行。
7.this 关键字
1)代表当前对象的引用,使用的时候谁调用方法this就代表谁。
2)什么时候使用this?
当局部变量和成员变量重名的时候,可以用this区分;
写功能的时候可能用到this,比如:比较两个对象的年龄 this.compare(p);
构造函数中使用this,调用本类中其他的构造函数,this()必须放在第一行;
由上面总结:this是指向对象身份的一个指针。
8.局部代码块
例如:
public static void main(String[] args){
{
int x = 10;
System.out.println(x);
}
}
作用:限定了变量的生命周期;
位置:定义在方法里;
9.构造代码块
class Test{
{
System.out.println("我是构造代码快"); //构造代码块或者初始化快是对构造函数的补充,优先于构造函数执行。
}
}
注意:如果成员变量进行显示初始化(如:int num = 10;)的源码放在了构造代码块之前,那么显示初始化先执行;
如果成员变量显示初始化的源码放在构造代码块之后,那么先执行构造代码块中的代码。
其实初始化快是对构造器的补充,初始化块是不能接收任何参数的,定义一些所有对象共有的属性、方法等内容时
就可以用初始化快来初始化。
好处:可以提高初始化块的复用,提高整个应用的可维护性。
10.static关键字
静态修饰的方法比非静态多一种调用方式,可以类名.调用,如:Person.eat();
特点:
1)随着类的加载而加载,静态会随着类的消失而消失,说明它的生命周期最长;
2)优先于对象存在,明确一点:静态先存在,对象后存在;
3)被所有对象共享;
4)可以被类名.调用;
11.实例变量(非静态成员变量)和类变量(静态变量)区别
1)存在位置:
类变量(静态变量)随着类的加载而存在方法区中;
实例变量随着对象的建立而存在于对内存中;
2)生命周期:
静态变量的生命周期最长,随着类的消失而消失;
实例变量的生命周期随着对象的消失而消失;
3)所属不同:
静态变量也称之为类变量,所属于整个类被整个类共享;
实例变量是对象的特有数据,所属于对象;
12. 静态代码块
格式 static { }
静态代码块随着类的加载而加载,而且是类一加载只执行一次;
静态代码块与构造代码块的异同:
1)相同点:
都是在JVM加载类时,构造方法之前执行,在类中可以定义多个;
2)不同点:
静态代码块在非静态代码块之前执行,静态代码块只在第一次new执行一次,之后不再执行;
构造代码块在每new一次就执行一次;
当一个类中所有方法都是静态的,那么建议私有构造函数,目的不让别的类继承;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值