Java的面向对象思想

Java是一种面向对象的语言,是吧构成问题事务分解成各个对象,而建立对象的目的不是为完成一个步骤,而是为了描述某个事务在整个解决问题的步骤中的行为。

再说到对象之前得要知道类的概念,类就是对一类事务的描述,是抽象的,它相当于是对象的模板,需要创建什么样的对象就需要用到什么样的类,而在问题的解决上面都是一般是通过对象来解决的。

定义好类,就可以通过类来创建对象(类的实例化)。具体的实现是通过类的构造器来创建的对象。

构造器也叫构造方法,与普通方法的区别是没有返回类型,名字必须和类名一样。如果在类中没有写入构造器,jvm会自动给这个类添加空参构造器。一旦自己重写了构造器后,jvm就不会自动给我们添加这个空参构造器,如果写入的构造器含有参数,又需要一个空参的构造器,就必须自己手动写入一个空参的构造器。构造器可以有多个,区别它们的不同就要通过参数的个数与类型,或者类型的顺序。但形参名不能作为构造器的区分条件。

stack(栈)与heap(堆)

例如:Person p = new Person();   其中对象名p存放在stack中,而对象的实体放在heap中,stack中存了地址,指向heap那块存p对象实体的地址。

访问控制修饰符:

public 公开:对外完全公开
protected  保护:同一包下的类或子类公开
(default) 默认(不填写时):同一包下的类

private 私有:完全不公开,仅本类自己可访问

静态static

类可以定义静态属性与静态方法,静态属性与静态方法是属于这个类的,而不是属于类具体的实例。该类的对象所使用的静态属性都是同一块内存里的东西,其中一个对象如果改变了这个静态属性的值,那么其他对象中该静态属性的值也相应的被改变。

java类的加载初始化

静态代码块

在类中可以有静态代码块,它是只在加载类的时候才执行(如果创建了该类的多个对象,只执行一次),而且是在构造方法执行前执行。

抽象类与抽象方法 abstract 

抽象类是不能被实例化的(不能创建出该类对应的对象),它是用来被继承的。抽象类中没有抽象构造方法,但抽象类的构造器是正常的。抽象类中常规方法和抽象发放都可以存在,但抽象方法只能出现在抽象类中。如果子类继承了含有抽象方法抽象类,且子类不是抽象类,就必须要在子类中重写父类中的抽象方法。当然,如果子类也是抽象类的话就可以不重写父类的抽象方法。

子类重写父类的方法是,重写的方法的访问权限必须大于等于父类方法的访问权限。

final类是不能被继承的。final方法不能被重写。

接口

接口中只能拥有被public,static和final修饰的变量,即静态常量。

接口中只能有抽象方法,不能有具体的方法。其用意就在使用到接口的类中去重写接口中的抽象方法,消除了java不能多重继承的缺陷。

接口不能有构造函数。

抽象类与接口的区别:

抽象类可以有具体的方法,从而避免了子类重复实现,提高了代码的重用率。而接口只能添加抽象方法,一旦几口被发布,我们就一定要保证他是稳定的,否则我们一修改接口,就必须要修改所有的子类。(抽象类的优势)

一个子类只能继承一个父类,但却可以实现多个接口。(接口的优势)


匿名内部类更多的用来快速方便的实现接口或一个抽象类的对象,并扩展和使用它们提供的方法。

发布了23 篇原创文章 · 获赞 6 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Vitens/article/details/41749229