深入理解Java的基本概念:ADT&OOP的概念具体实现(2)

4、可见范围声明

public:任何地方都可访问。

protected:类的子类(后面会讲)及其实例对象可以访问。

private:只有类(实例对象)的内部可以访问。

可以用来修饰方法、属性和类。

1)修饰类:包内的其他文件能否访问。

2)修饰方法:类的外部能否使用该方法。

值得一提的是:如果将所有构造函数声明为private,这个类将无法在外部构建实例对象!只可以通过这个类的静态方法来创建。

3)修饰属性:类的外部能否访问、赋值这个变量。

5、静态与非静态:类、属性、方法、对象

1)对象是实例化的类,就好比水果类和苹果实例,苹果是水果这个类的一个实例。

2)非静态属性是对象的成员变量,每一个对象都有单独的一份。
静态属性是属于类的成员变量,不归属于任何对象,无论类有多少实例对象,这个属性都只有唯一的一份。可以使用类名.属性名进行访问。

3)非静态方法是对象的成员函数,函数体内部可以使用this来访问对象的成员。
静态方法是属于类的成员函数,不归属于任何对象,因此也无法直接访问非静态的成员变量,因为他们完全没有关联。

6、抽象类

含有抽象方法的类是抽象类,抽象类无法创建对象。
抽象类(方法)使用abstract关键词修饰。
使用抽象类的方法是用一个子类去继承它,并实现它的抽象方法。

7、类的继承(extends)与方法的重写(Override)

类可以继承一个另一个类,如没有指定,则默认继承Object类,它是所有类的祖先。

A类继承B类可以用以下语句表示:class A extends B {成员}

类不支持多继承:即不可以有多个父类。

继承后,子类将获得父类的所有成员(属性和方法):
在子类内部可以使用super.成员名调用(仅限public/protected),其中构造函数为super(构造参数),而在外部,可以直接访问public的成员。

重写:子类的父类的方法可以重名,这时子类的方法将覆盖父类的方法(抽象方法),这将导致父类方法在外部无法直接调用(抽象方法本身无法调用),外部将调用子类重写的方法。不过也可以在子类的方法中使用super调用。
通常在子类重写的方法前使用@Override来声明重写。

阻止重写:在父类中的方法前增加final关键词可以阻止子类重写(称为严格继承)。

在外部,父类的变量是可以被赋予子类的值的,不过不要想当然只能运行父类方法,只有运行时才能决定使用哪个方法:子类型可以赋值给父类型的变量,但是通过该变量无法使用子类型的多余成员,只能使用子类型的重写方法或继承的内容(父类的原始方法)。

实际上,可以使用抽象方法(抽象类)来要求子类型实现方法并使用子类型的方法(如果有)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值