Java面向对象三大特征

封装:

封装:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问 。

封装的两个大致原则

把尽可能多的东西藏起来,对外提供便捷的接口;

把所有的属性藏起来。

封装的优点

便于使用者正确使用系统,防止错误修改属性

有助于系统之间的松耦合,提高系统独立性

提高软件的可重用性

降低了构建大型系统的风险

封装的步骤:

修改属性的可见性(设为private)

创建公有的getter/setter方法(用于属性的读写)

在getter/setter方法中加入属性控制语句(对属性值的合法性进行判断)

封装时会用到多个权限修饰符来修饰成员变量和方法

     作用域

修饰符

同一个类中

同一个包中

子类中

任何地方

private

可以

不可以

不可以

不可以

默认修饰符

可以

可以

不可以

不可以

protected

可以

可以

可以

不可以

public

可以

可以

可以

可以

IDEA添加geter/setter方法的快捷键:Shift+Alt+S+R

继承:

语法:

1、编写父类(或叫基类、超类)
class Pet{

        //公共的属性和方法

}

2、编写子类、继承父类

class Dog extend Pet{

        //子类特有的属性和方法

}

在Java中只支持单继承,每个类只能有一个直接父类。但子类可以继承父类的父类的方法和属性。

子类可以从父类中继承到:

1、继承public和protected修饰的属性和方法,不论子类和父类是否在同一个包中。

2、继承默认权限修饰符的属性和方法,大拿hi子类和父类必须在一个包中。

不能被继承的父类成员:

private成员、子类与父类不在同包使用默认访问权限的成员、构造方法。

子类访问父类成员:

访问父类构造方法:

super();

super . name;

访问父类的属性:

super . name;

访问父类的方法:

super . print;

super代表对当前对象的直接父类对象的默认引用 。

super必须出现在子类(子类的构造方法)中,且必须是第一句。

不可以访问父类中定义为private的属性和方法。

多重继承关系的初始化顺序:父类属性>>父类构造方法>>子类属性>>子类构造方法

如果子类的构造方法中没有通过super显式调用父类的有参构造方法,也没有通过this显式调用自身的其他构造方法,则系统会默认先调用父类的无参构造方法。

如果子类的构造方法中通过super显式调用父类的有参构造,则将执行父类相应的构造方法,而不执行父类的无参构造方法。

如果子类的构造方法中通过this显式调用自身的其他构造方法,则在相应构造方法中应用以上两条规则。

方法重写(overriding)

在子类中根据需求对从父类继承的方法进行重写,成为方法的重写或方法的覆盖

方法重写的规则:

重写方法与被重写方法必须具有相同的方法名和参数列表。

重写方法的返回值必须和被重写方法的返回值相同或者是其子类。

重写方法不能缩小被重写方法的访问权限。

方法重写和方法重载的区别和联系:

overloading是方法重载,重载涉及同一个类中的同名方法,要求方法名相同,参数列表不同,与返回值类型、访问修饰符无关。
overriding是方法重写,重写涉及的是子类和父类的同名方法,要求方法名相同,参数列表不同,返回值类型相同(或是其子类)、访问修饰符不能严于父类。

位置

方法名

参数表

返回值

访问修饰符

方法重写

子类

相同

相同

相同或是其子类

不能比父类更严格

方法重载

同类

相同

不相同

无关

无关

Object类

Object类是所有类的父类。

在定义一个类时,没有使用extend关键词,也就是没有明显显示继承某个类,那么这个类就是直接继承Object类。所有对象都继承Object类的方法。

Object类中定义了大量的可被继承的方法,也是它的子类经常重写的方法。

方法

说明

toString()

返回当前对象本身的有关信息,按字符串对象返回

equals()

比较两个对象是否是同一个对象,是则返回true

hashCode()

返回该对象的哈希代码值

getClass()

获取当前对象所属的类信息,返回Class对象

final修饰符

在Java中,final修饰词用来修饰类、方法和变量(包括成员变量和局部变量)。

当用final修饰一个类时,表示这个类不能被继承。也就是,如果一个类你永远不想让他被继承,就可以用final来修饰。final类中的成员变量可以根据需要设为final,但是 要注意final类中的成员方法都会被隐式指定为final方法。

使用final修饰的方法表示此方法已经是“最后的最终的”含义,亦即此方法不能被重写(可以重载多个final修饰的方法)。

final成员变量表示常量,只能被赋值一次,赋值后值不可以改变。

final修饰一个成员变量(属性),必须要显示初始化。这里有两种初始化方式,一种是在变量声明的时候初始化;第二种方法是在声明变量的时候不赋初值,但是要在这个变量所在的类的所有的构造函数中对这个变量赋初值。

当final修饰一个基本数据类型时,表示该基本数据类型的值一旦在初始化后便不能发生变化;如果final修饰一个引用类型时,则在对其初始化之后便不能再让其指向其他对象了,但该引用所指向的对象的内容是可以发生变化的。

多态

多态是面向对象的三大特征之一

使用父类作为方法的形参,是Java中实现和使用多态的主要方式之一。

使用父类作为方法的返回值,是Java中实现多态的另一种方式。

具有继承关系,父类(或父类的父类)引用指向子类对象,子类重写方法,

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值