Java面向对象基础知识及封装性

    技术2022-05-19  22

    Java面向对象基础知识及封装性

     

    一.本章知识点:

    1.面向对象的概念

    二.本章“定理”:

    1.面向对象,定义一个物体时(窗口),除了指定物体的属性,(如,窗口大小,位置,颜色等),还要指定窗口应该有的动作(隐藏,移动,最小)。这是一种主语与谓语的关系。

    2.面向对象的三大特征:

    ——封装(Encapsulation

    ——继承(Inheritance

    ——多态(Polymorphism

    3,类和对象时面向对象方法的核心概念:

    ——类:是对某一事物的描述,是抽象的,概念上的;类描述了对象的属性,行为(方法,函数);

    ——对象:是实际存在的该类事物的每个个体,因而也成为实例(instance);

    一个类可以产生多个对象;面向对象的重点是类的设计;

    4.对象的产生(如Person类的对象)

    Person p1=new Person()

    首先,通过new关键字,在堆内存中创建一个Person对象(会对其中各种类型的成员变量自动进行初始化赋值),然后栈内存中分配一个Person变量p1p1就是对象的引用句柄(对象本身在堆内存中),引用变量的值等于对象在堆中的首地址。以后用引用变量代表堆中的对象;通过引用变量调用对象的成员;<对象名>.<对象成员>;

    5.对象的比较:“==”运算符与equals方法的区别

    ——“==”运算符用于比较两个变量的值是否相等

    ——equals用于比较两个对象的内容是否一样

    6.比较数组内容是否一致,用Arrays.equals方法

    7.System.out.println(Object obj);//

    1.按照平台默认字符串编码将String.valueof(Object)方法生成的字符串转换为字节,并完全以write(int)方法的方式写入这些字节;

    String.valueof(Object obj);//如果obj值为null,则字符串等于“null“,否则,返回obj.toString()的值;

    obj.toString()通常会返回一个“以文本方式表示“此对象的字符串。

    return getClass().getName() + '@' + Integer.toHexString(hashCode())

    8.当一个对象被创建时,首先会调用构造函数,在构造函数中可以初始化一些信息,构造函数可以重载。如果没有显示的定义构造函数,系统会默认的生成一个无参的构造函数,如果自己显示的定义过了,那么系统就不会给提供无参构造函数了;

    9.this是什么?

    在每个成员方法内部,都有一个this引用变量,指向调用该方法的对象的首地址;当一个构造方法调用另一个构造方法时我们用this(参数 )

    10.垃圾回收机制

    finalize()方法是在Object类中定义,每个类都可以继承;当对象被清理掉之后系统会自动调用finalize()方法;System.gc()函数可以强制进行垃圾回收;

    . 本章知识“为什么”:

    1.为什么属性变量一般使用私有(private)?

    实现类的封装性:如果一个外面的程序可以随意修改一个类的成员变量,会造成不可预知的程序错误,就像一个人的身高,我们不能被外部随意修改,只能通过各种摄取营养的方法去修改这个属性。所以我们使用private修饰符,作用是成员成了私有成员,只能被这个类的其他成员方法调用,不能被其他类中的 方法所调用;只有通过public方法来对这个变量进行访问。

    四.学生信息表(包括排序);

    可以有两种方法实现:

    第一种方法

    //s1,s2,s3,s4分别是Student的实例对象;

    TreeSet al=new TreeSet();

    al.add(s1);

    al.add(s2);

    al.add(s3);

    al.add(s4);

    Iterator it=(Iterator) al.iterator();

    //TreeSet 实现了自动排序,也可以让Student类实现Comparable接口,重新compare

    第二种方法

    ArrayList al=new ArrayList();

    al.add(s1);

    al.add(s2);

    al.add(s3);

    al.add(s4);

    Iterator it=(Iterator) al.iterator();

    Collections.sort(al);

    用这种方法排序时,student类必须实现Comparabler接口,重新compare方法;


    最新回复(0)