java再读面向对象

成员变量 V/S 局部变量

成员变量:又叫属性,声明于类中方法外,作用范围所在的类(可放在最前面或最后面没什么影响),成员变量不必初始化系统会自动给初始化。

局部变量:声明于方法体中,作用范围所在的方法中,局部变量必须初始化否则报错。

成员变量和方法

成员变量:又叫属性、静态属性,每个实例出来的对象都有一份(所占内存空间不同)

方法:即其他语言中的函数,又叫动态属性,所有实例出来的对象共享同一个方法

类和对象的概念

类: 类是具有共同特征的一类事物的一个抽象。类是用来创建同一类型的对象的“模版”,在一个类中定义了该类对象应具有的成员变量和方法。

对象:又叫实例,是类的一个具体的实例。对象可以看成静态属性(成员变量)和动态属性(方法)的封装体

类与类之间的关系

关联:即A类中的方法的参数是B类的一个对象。(弱)

继承:XX 是一种 XX。(一般和特殊)

聚合:XX 是 XX的一部分。(整体和部分)

聚集

组合

实现:子类实现父类中的方法

多态

构造方法

构造方法名和类名相同且构造方法名前必须什么修饰也没有(void ,public, int等都不能加否则就变成普通的方法了而不是个构造方法了)。


方法的重载

方法的重载:指的是同一个类中的多个方法的方法名字相同,参数不同(参数的类型不同或参数的个数不同)。与访问权限修饰符和返回值类型没关系。一个原则:只要调用的方法能够被正确区分,那么这几个方法就构成重载。

关键字之this

This是指调用当前方法的对象的引用。

This可以用来区分成员变量和局部变量重名。

This可以看成是一个变量,它的值是当前对象的引用。

关键字之static

用Statics声明 的方法为静态方法,在调用该方法时,不会将该对象的引用传递给它。

所以,在static方法中不可以访问非static的成员(成员指成员变量和方法)这是因为静态方法不再是针对某个对象调用,所以不能访问非静态成员。

静态的成员变量或是方法可以直接用类名.成员变量名或类名.方法名来调用。

继承

子类extends父类,即表示拥有父类(基类)的所有成员(成员变量和方法)private类型的有拥有全没使用权。

Java中只支持单继承不允许多继承。子类只能有一个基类,一个基类可以派生出多个子类。

访问控制

Java权限修饰符private,protected,public放在类成员的定义前。用来限定其他对象对该类对象成员的访问权限。

修饰符

类内部

同一个包

子类

任何地方

Private

Yes




Default

Yes

Yes



Protected

Yes

Yes

Yes


Public

Yes

Yes

Yes

Yes

对class的权限修饰符只可以用public和default

public 可以在任何地方被访问

default只可以被同一个包内部的类访问。

方法的重写

子类可以根据需要从对基类(父类) 中继承来的方法进行重写。

重写方法必须和被重写方法具有相同的方法名,相同的参数列表,形同的返回类型(也就是完全一样,一定要Copy避免不必要的麻烦)

重写的方法不能使用比被重写方法更严格的访问权限。

 

关键字之super

Super用来引用基类的成分

继承中的构造方法

子类的构造过程中必须首先调用其基类的构造方法(先调父类的构造方法然后才是自己的)。

子类可在自己的构造方法中使用super(参数列表)调用基类的构造方法。

         使用this(参数列表)调用本类的另外的构造方法。

         如果调用super,必须写在子类构造方法的第一行。

如果子类没有显示的调用基类的构造方法,则系统默认调用基类无参数的构造方法。

如果没显示的调基类的构造方法且基类中没有无参数的构造方法,则编译出错。

Objiect 类

Objiect 类是所有Java类的根基类。

如果在类的声明中没有使用extends指明其基类则默认其基类为Object

public class person {}

等价于

public class person extends Object {}

Object之toString()

Object类中的toString()是打印出对象的类名@哈希码

String类中的toString()是答应出对象的值。

一般重写toString()方法。

hashcode(哈希码)独一无二的代表了一个对象,并且通过这个哈希编码可以找到这个对象所在的位置。

Object之equals

Object类的equals方法提供了逻辑上的相当判断,A.equals(B),当且仅当A、B这两个引用指向同一个对象时返回true。String类中的是指两个字符串相相同时返回true。不同的类的equals方法的实现不同,一般重写equals()方法。

对象转型

一个基类的引用类型变量可以“指向”其子类的对象。

一个基类的引用不可以访问其子类对象新增加的成员(属性和方法)。

可以使用引用 变量 instanceof 类名 来判断该引用型变量所指向的对象是否属于该类或该类的子类。

子类的对象可以当作基类的对象来使用称作向上转型(upcasting),反之称为向下转型(downcasting)。

多态

动态绑定是指在执行期间(而非编译期间)判断引用对象的实际类型,根据其实际的类型调用其相应的方法。

抽象类

用abstract关键字来修饰一个类时,这个类叫抽象类;用abstract来修饰一个方法时,该方法叫抽象方法。(抽象的方法在方法名后不能再加{}否则报错)

含有抽象方法的类必须被声明为抽象类,抽象类必须被继承,抽象的方法必须被重写。

抽象的类不能被实例化。

抽象方法只需声明,而不需实现。

关键字final

final的变量值不能够别改变

   final的成员变量

   final的局部变量(形参)

final的方法不能够被重写。

final的类不能够被继承。

接口

接口(interface)是抽象方法和常量值的定义的集合。

从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。

implements 接口后,必须重写此接口中的所有抽象方法。

接口interface                                                                

多个无关的类可以实现同一个接口。

一个类可以实现多个无关的接口。

与继承关系类似,接口与实现类之间存在多态性(接口相当于例子中的父类Animal)。

接口的特性

接口可以实现多重继承。

接口中声明的属性默认为public static final 的:也只能是public static final 的。

接口中只能定义抽象方法,而且这些方法默认为public的:也只能是public的。

接口中的方法都是抽象的,接口中的属性都是终态的。写不写修饰系统都给你自动默认。说白了接口就是一个特殊的抽象类。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值