java面向对象复习笔记

1、面向对象的程序设计有三个主要特性——封装性、继承性、多态性

*封装机制表现为把描述对象属性的变量及实现对象功能的方法合在一起,定义为一个程序单位,并保证外界不能任意更改其内部的属性值,也不能任意调动其内部的功能方法。

*另一个特点为为封装在一个整体内的变量及方法规定不同级别的“可见性”或访问权限。

2、继承性

*提高代码的可复用性,提高开发效率,降低错误的可能性,为修改提供便利。

3、多态

*方法重载

*对象多态

4.类是有属性和方法组成的。

1 //定义Person类
 2 class Person
 3 {
 4     String name;        //声明姓名属性
 5     int age;            //声明年龄属性
 6     public void tell()        //取得信息的方法
 7     {
 8         System.out.println("姓名:" + name + ",年龄" + age);
 9     }
10 }

 

5、对象的实例化需要划分堆、栈空间,栈中存放的是堆空间的地址。

6、类属于引用数据类型,引用数据类型就是指一段堆内存空间可以同时被多个栈内存指向。

7、java提供垃圾回收机制,会不定期释放不用的内存空间,只要对象不使用了,就会等待GC释放空间。

8.java可以通过private关键字对属性和方法进行封装,用private声明的属性或方法只能在其类的内部被调用,而不能在类的外部被调用。

9、构造方法的主要作用是为类中的属性初始化

*构造方法的名称必须与类名一致

*构造方法的声明处不能有任何返回值类型的声明

*不能在构造方法中使用return返回一个值

*只要有类就必须存在构造方法,在java中如果一个类没有明确地声明一个构造方法,则在编译时会直接生成一个无参数,空的构造方法。

*构造方法可以进行重载

10、匿名对象

——匿名对象就是没有明确给出名字的对象,一般只是用一次,而且只在堆内存中开辟空间,不存在栈内存的引用

11、this关键字的作用

——表示类中的属性

——使用this调用本类的构造方法

——this表示当前对象

12、使用static声明的属性是所有对象共享的。非static声明的方法可以去调用static声明的属性或方法。static声明的方法不能调用非static类型声明的属性或方法。因为程序中所以的属性和方法必须在对象开辟堆内存之后才可以调用,而static类型的方法在对象未被实例化时就可以被类名调用。

*使用static属性统计实例化对象个数

1 class Demo
 2 {
 3     private static int count = 0;
 4     public Demo()
 5     {
 6         count++;
 7         System.out.println("产生了"+count+"个对象");
 8     }
 9 }
10 public class StaticDemo
11 {
12     public static void main(String[] args)
13     new Demo();
14     new Demo();
15     new Demo();
16 }

 

13、java中常用的内存区域

java中主要存在4块内存空间

——栈内存空间:保存所以的对象名称(保存了引用的堆内存空间的地址)

 ——堆内存空间:保存每个对象的具体属性内容

——全局数据区:保存static类型的属性

——全局代码区:保存所有的方法定义

 14、代码块

——代码块是指用{}括起来的一段代码,根据位置不同可以分为普通代码块、构造块、静态代码块和同步代码块

15、单例设计模式

*只要将构造方法私有化,就可以控制实例化对象的产生

1 class Singleton
 2 {
 3     private static Singleton instance = new Singleton();
 4     private Sigleton(){}
 5     public static Singleton getInstance()
 6     {
 7         return instance;
 8     }
 9     public void print()
10     {
11         System.out.println("Hello World");
12     }
13 }
14 
15 public class SingleDemo
16 {
17     public static void main(String[] args)
18     {
19         Singleton s1 = Singleton.getInstance();
20         Singleton s2 = Singleton.getInstance();
21         Singleton s3 = Singleton.getInstance();
22         s1.print();
23         s2.print();
24         s3.print();
25         
26     }
27 }

16、内部类的唯一好处是可以方便地访问外部类中的私有属性。

17、总结

*面向对象的三大特征为封装、继承、多态

*类与对象的关系:类是对象的模板,对象是类的实例,类只有通过对象才可以使用。

*类属于引用数据类型,进行引用传递时,传递的是堆内存的使用权。

*类的封装性:通过private关键字进行修饰,被封装的属性不能被外部直接调用,只能通过setter或getter方法完成。只要是属性,则必须全部封装。

*构造方法可以为类中的属性初始化,构造方法与类名称相同,无返回值类型声明,如果在类中没有明确地定义出构造方法,则会自动生成一个无参的构造方法。

*如果需要限制对象的产生,可以将构造方法私有化,实现单例设计模式。