【Java笔记】面向对象之类与对象

1、构造方法及其重载
2、static关键字
3、静态变量与成员变量
4、静态方法与成员方法
注意:在同一个java原文件中,可以有多个class类,但是只有有一个公共的 public class

1、构造方法

这里写图片描述


因为后续复习子类如何调用构造函数的时候涉及到了无参构造函数的问题,所以在这里我梳理了无参构造函数的知识。
关于无参构造函数的说明:当我们创建一个类的时候,如果我们没有创建一个构造方法(哪怕是无参数的)。JVM会帮助我们创建一个默认的构造方法,也称为无参构造方法。但是如果我们创建一个构造方法时,JVM就不会再为我们生成一个默认的构造方法。子类构造函数中没有显示定义的时候,子类会默认的调用父类的无参构造方法。
子类继承父类中,子类会在构造函数中调用父类的构造函数,总结为以下几种情况:
1. 如果没有显式定义,系统会自动添加super()来调用父类构造函数。
- super()调用的是父类的无参构造函数。
(父类中只有默认构造函数即无参构造函数或显示定 义了无参构造函数)
- 如果父类 没有无参构造函数,则编译器报错。
2. 如果已经显式定义 ,则会根据定义的super(* ,* ,* , … )来调用对应的父类的构造函数.


**函数重载:函数名称一样,但参数列表内容不一样(参数个数或者参数类型)
函数重载的好处:使得类似的功能的多个函数能够使同一个函数名,这样方便程序员的记忆。**

2、静态成员

1、用static修饰的变量就是静态变量,也被称为类变量。
2、其特点是被所有对象共享,可以通过“对象名.静态变量名”
或者“类名.静态变量名”两种方式访问,且以第二种访问的
方式居多。
这里写图片描述

疑难杂题:为什么实例对象可以访问类的静态成员,静态成员不可以访问实例对象

全类共享静态成员,实例对象可以访问类的静态成员,静态成员不可以访问实例对象。按初始化的先后顺序来考虑即可明白。
类的静态成员不需要有实例对象,在类加载的时候,就可被初始化了。
类的静态成员的初始化,是比类的实例对象要提前完成的,所以实例对象可以访问类的静态成员。

总结:

声明的完整格式:
这里写图片描述这里写图片描述

abstract;抽象类抽象方法,必须被继承才能使用. public abstract double area();

static:静态成员,所有对象共享。非静态变量不能够被静态方法引用。不能用private、static、synchronized、native访问修饰符修饰。原因如下:抽象方法没有方法体,是用来被继承的,所以不能用private修饰;static修饰的方法可以通过类名来访问该方法(即该方法的方法体),抽象方法用static修饰没有意义;使用synchronized关键字是为该方法加一个锁。。而如果该关键字修饰的方法是static方法。则使用的锁就是class变量的锁。如果是修饰类方法。则用this变量锁。但是抽象类不能实例化对象,因为该方法不是在该抽象类中实现的。是在其子类实现的。所以。锁应该归其子类所有。所以。抽象方法也就不能用synchronized关键字修饰了;native,这个东西本身就和abstract冲突,他们都是方法的声明,只是一个吧方法实现移交给子类,另一个是移交给本地操作系统。如果同时出现,就相当于即把实现移交给子类,又把实现移交给本地操作系统,那到底谁来实现具体方法呢?

final:最终类最终方法,不能被继承。final修饰的变量不可变;final修饰的对象其属性可以改变,但是final型的引用是不能被修改的~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章