Java面向对象总结


一、类和对象

Java中的类可以包含局部变量、成员变量、类变量

  • 局部变量:在方法、构造方法中定义的变量

  • 成员变量:定义在类中,方法体之外的变量。可以被类中的各种方法使用

  • 类变量:定义在各种类中,方法体之外。必须声明为static类型

构造方法 : 如果没有显式地为类定义构造方法,Java编译器会为该类提供一个默认的构造方法。在创

建一个对象的时候,至少要调用一个构造方法

Java中import语句执行的过程,import语句主要是提供一个合理的路径,使得编译器能够找到某个类

Java中的类有若干访问级别:抽象类、final类、内部类、匿名类

Java中强制要求类名和文件名相同,是因为在引用其他类的时候无需显式的声明,在编译时会根据类

名去寻找同名文件

Java中包的作用就是防止名字相同的类产生冲突。编译器在编译时直接根据package指定的信息直接

将生成的class文件生成到对应文件的目录中,比如package com.util.Test,编译器就将生成的.java文件

放于./com/util/Test/这个目录下

import的作用是为了简化使用package之后的实例化的代码,就是将new java.net.Socket()简化成

new Socket()

一个Java文件中只能包含一个Public的类

this是指向对象本身的指针,super是指向父类对象的一个指针

new关键字的一个作用,为对象分配内存空间、引起对象构造方法的调用,为对象返回一个引用

对象和引用的区别,对象是具体的一个实例,使用new创建一个对象时,是在堆内存中开辟一块空间

引用名称存放的对象的地址

二、Java中的继承

在Java中可以通过extends关键字可以声明一个类是从另外一个类继承而来的

Java中不支持多继承,但是支持多重继承

子类可以拥有父类非private的属性和方法,子类可以用自己的方式实现父类的方法

Java中所有的类都是继承于java.lang.Object这个祖先类,如果一个类没有显示继承,则默认情况

下继承Object 祖先类

implements关键字可以变相的使Java具有多继承的特性,同时实现多个接口

final关键字声明类可以把类定义为不能继承的,即是最终类。或者用于修饰方法,该方法不能被子类重写

final修饰类中的属性或者变量时,无论是基本类型还是引用类型

Java文件被编译成class文件时,在子类的所有构造函数中的第一行会默认添加super()语句,在执行子类

的构造函数前,总是会先执行父类的构造函数,执行父类构造函数的语句只能放在函数内语句的首句,不然

报错;如果父类不含默认的构造函数,子类中的super()语句就会执行失败

Object类是所有类的根父类,可以用于参数的传递,当你不清楚函数需要的参数是什么类型的,可以使

用Object类来代替,Object可以代替任何类

三、重写和重载

1.重写(Override)

重写是子类对父类的允许访问的方法的实现过程进行重新编写,返回值和参数都不能变

关于重写的一些注意事项:

  • 重写方法不能抛出新的检查异常或者比被重写方法申明更加宽泛的异常;比如说父类的一个方法声明了一个

IOException,子类就不能抛出Exception的异常了

  • 重写方法的参数列表必须和被重写方法相同

  • 返回类型和被重写方法的返回类型可以不相同,但是必须是父类返回值的派生类

  • 访问权限不能比父类中方法的访问权限更低

能否被重写的一些情况:

  • 构造方法不能被重写

  • 声明为final的方法不能被重新

  • 声明为static的方法不能被重写

四、Java转型的问题

关于Java的转型问题主要有以下几点:

  • 父类应用指向子类对象,但是子类引用不能指向父类对象,Java的抽象变成思想

  • 把子类对象直接赋给父类引用是向上转型,向上转型不用强制转换的,父类可以是接口

  • 把指向子类对象的父类引用赋给子类引用叫做向下转型,需要强制转换

    Father f1 = new Son();  //父类引用指向子类对象 向上转型
    Son s1 = (Son)f1;       //向下转型 需要强制转型