面向对象的三大特点:封装
、继承
、多态
封装:
封装是面向对象的核心思想。将对象的属性和行为封装起来。其载体就是类,类通常对客户隐藏其实现细节。
封装的思想的思想保证了类部数据结构的完整性。应用该类的用户不能轻易地直接操作此数据结构,只能执行类允许公开的方法。这样避免外部操作对内部数据的影响,提高了程序的可维护性。
继承:
继承是关联的一种。可以说子类的实例是父类的实例。父类的实例却不一定是子类的实例。
多态:
父类对象应用与子类的特征就是多态。所谓多态,就是指一个引用(类型)在不同情况下的多种状态,你也可以这样理解:多态是指通过指向父类的指针,来调用在不同子类中实现的方法。
Java 静态
- 在java静态方法中不能使用非静态的this关键字
- 在静态方法中不可以直接调用非静态方法
- 不能将方法体中的局部变量声明为为静态的
- 如果在执行类的时候,希望先执行类的初始化动作,可以使用static定义一个静态区域,当这段代码执行的时候,首先执行static块中的程序且只会被执行一次。
public class Test{
static{
//doSomething
}
}
对象的引用
类名 对象引用名称=new 类的构造函数
这里,new关键字会在堆内存中开辟一块区域,用于存储对象,而对象引用名称只是持有当前对象在堆内存的地址。有点像c++的指针。故称是对象的引用。
对象的销毁
- 对象引用超过其作用范围时,这个对象将会被视为垃圾,将自动销毁
- 对象的引用被复制为null,将自动销毁
- finalize()方法时Object的方法,对于不由new开辟的内存,可以在自己的类中复写finalize()方法
- System.gc()方法强制回收垃圾
class GrandFather{
public GrandFather()
{
System.out.println("GrandFather's Constructor was executed.");
}
}
class Father extends GrandFather{
public Father()
{
System.out.println("Father's Constructor was executed.");
}
}
public class Me extends Father{
public void Me()
{
System.out.println("My Constructor was executed.");
}
public static void main(String[] args)
{
new Me();
}
}
打印的结果:
GrandFather's Constructor was executed.
Father's Constructor was executed.
My Constructor was executed.
实例化子类对象首先要实例化父类对象,实例化子类对象时父类的无参构造方法会被调用。但非无参父类构造函数不会被自动调用。
网友评论