黑马程序员——Java基础:面向对象一些概念的区分(一)

来源:互联网 发布:淘宝店铺微信推广 编辑:程序博客网 时间:2024/05/16 08:45

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-
1.类和对象
类:就是对生活中事物的描述,就是定义事物的属性和行为,比收入
票就是类,它的属性有班次、日期、价格:行为有过期作废,从
一个地方到另一个地方。
对象:就是这类事物实实在在存在的个体,就是在堆内存中用new建立
的实体,该实体被建立后就有内容,为默认初始化值(字符串为
null,数值为0),而且该对象有一个内存地址,该内存地址被赋给
栈内存中定义的一个类类型变量,该变量就指向这个对象。

2.成员变量和局部变量
1)作用范围不同
成员变量作用于整个类中,而局部变量作用于函数中,或者语句中
2)内存位置不同
成员变量随着对象的建立而存在于堆内存中,局部变量存在于栈中。

3.匿名对象和有名对象
1)如果对对象方法只调用一次,可以使用匿名对象,起到简化的作用,
但是如果要对对象成员调用多次,必须使用有名对象
2)匿名对象可以作为实际参数使用。

4.封装:隐藏对象的属性和实现细节,对外仅提供公共访问方法。
好处:提高安全性,提高重用性,便于使用
封装的方式一:使用private来修饰成员变量(或成员方法),使得类以外的
对象不能直接访问成员变量,只能通过类定义的公有方法
访问数据,进行操作,提高代码的健壮性。
5.构造函数和一般成员函数
1)写法上的不同
构造函数没有返回值类型,也不用写return语句,函数名必须与类名相同;
而一般函数必须有返回值类型。
2)运行上的差别
构造函数在对象一建立就执行,给对象初始化,而且只执行一次;
一般函数可
以被调用多次。

6.构造代码块与构造函数
构造代码块是给所有对象初始化,且对象一建立就运行,构造代码块
中定义的是所有对象的共性部分;而构造函数只给不同的对象分别初始化。

7.this关键字
作用:用于区分局部变量和成员变量
this代表:所在函数所属的对象的引用,也就是哪个对象调用this所在的
函数,this就是哪个对象的应用。
this应用:凡是本类内部方法调用本类的对象时,就使用this。

8 “this.”和this()的区别
this()语句用于构造函数之间的互相调用,而且要定义在构造函数的第一行;

class Person{    private String name;    private int age;    Person(String name)         {        this.name = name;    }    Person(String name, int age)       {        this(name);    //调用构造函数Person(String name)赋值        this.age = age;   //直接赋值    }}

9.static关键字
用法:用于修饰成员变量和成员函数,
特点:1)随着类的加载而加载,优先于对象存在
2)static修饰的成员被所有对象共享
3)既可以被对象调用,也可以被类名所调用,比如
System.out.println()中System就是类名,它直接调用out()
静态成员函数

10.实例变量(非静态变量)和类变量(静态变量)比较
相同点:他们都属于成员变量
不同点:1)定义形式不同
实例变量没有static修饰符,而类变量有static修饰符
2)存储位置不同
实例变量随着对象的建立而存在于对内存中;而类变量
随着类的建立而存在于方法区
3)生命周期不同
实例变量随着对象的消失而消失;而类变量随着类的消失
而消失。
11.非静态方法和静态方法比较
1)使用范围
非静态方法既可以访问静态成员,也可以访问非静态成员;而静态
方法只能访问静态成员
2)生命周期
非静态方法随着对象的存在而存在,生命周期短;静态方法随着类
的加载而加载,消失而消失,生命周期长。而且类方法中不能使用
this、super关键字。
3)主函数是静态的

12.主函数
主函数:是一个特殊函数,作为程序的入口,可以被jvm访问
public:访问权限最大,可以被同类、子类、不同类、不同包、
同包访问。
static:代表着主函数随着类的加载而存在
void:表示主函数无返回值
main:不是关键字,但可以被虚拟机识别
(String [ ] args):主函数的参数,类型是字符串类型数组,jvm调用
主函数是,传入的是new String[0]。
可以用下面的代码验证:

class MainTest{    public static void main(String [ ] args)    {        System.out.println(args.length);    }}

13.什么时候使用静态?
1)静态变量
当对象中出现共享数据时,该数据被定义成静态变量,而特殊
数据被定义为非静态变量
2)静态方法
当功能内部没有访问非静态变量时,需要定义静态方法。的示例如下:

class Person{    String  name;    //因为show函数中没有涉及到非静态变量,没有意义,故要    //定义成静态变量    public  static void show()    {        System.out.println("hello");    }}class Test{    //不使用下面的代码    /*Person p = new Person();    p.show();*/    //要使用如下代码    Person.show();}
0 0