JavaSE入门面向对象基础知识day02

一,多态(重点)

1.什么是多态:多态是在继承/实现情况下的一种现象。

2.多态的表现

(1)对象多态:父类类型的变量接受子类类型的对象。

(2)行为多态:多个同类型的变量调用同一个方法,最终执行的结果/行为不一样。

3.多态的前提:要有继承/实现;存在父类引用子类对象;要有方法重写。

4.成员访问特点

(1)实例变量:编译看父类(左边),运行看父类(左边)

(2)实例方法:编译看父类(左边),运行看子类(右边)

(3)类方法:编译看父类(左边),运行看父类(左边)

(4)总结:除了实例方法编译看父类,运行看子类,其余情况都看父类。

5.多态的好处:在多态形式下,右边的对象是解耦合的,更便于扩展和维护。

6.弊端:多态形式下不能使用子类独有成员。

7.应用场景:定义方法时,使用父类类型的形参,可以接收父类类型的对象和一切子类对象,扩展性更强,更便利。

8.类型转换

(1)向上转型:父类 变量名=new 子类()

         例子:People p=new Teacher()

(2)向下转型:子类 变量名=(子类)父类变量

         例子:Teacher t=(Teacher)p

(3)注意:如果对象的真实类型与强转后的类型不同,编译阶段不会报错,但是运行时会报错                (ClassCastException)

(4)建议:向下转型前,使用instenceof关键字,判断当前对象的真实类型,在进行转型。

二,final

1.final修饰类(最终类)

   特点:不能被继承

2.final修饰方法(最终方法)

   特点:不能被重写

3.final修饰变量

   特点:

(1)该变量只能被赋值一次

(2)修饰基本类型的变量,变量存储的数据不能被改变

(3)修饰引用类型的变量,变量存储的地址不能被改变,但地址所指向对象的内容是可以被改变           的

4.常量

(1)本质:使用static final修饰的成员变量被称为常量

(2)作用:通常用来记录系统的配置信息

(3)书写规范:常量名所有字母必须大写,多个单词之间需要用下划线“_”隔开

(4)好处 

      ①代码可读性更好,可维护性也更好

      ②程序编译后,常量会被“宏替换”:出现常量的地方全部会被替换成其记住的字面量,这样可            以保证使用常量和直接用字面量的性能是一样的

三,abstract

1.abstract修饰方法(抽象方法):只能有方法签名,不能有方法体

2.abstract修饰类(抽象类):可以有抽象方法的类

(1)本质:还是一个类,可以有类的全部内容,还可以有抽象方法。

(2)特点

      ①不能创建对象,如果创建对象就会报错

      ②抽象类虽然不能创建对象,但是可以作为父类让子类继承,而且子类继承父类必须重写父类            的所有抽象方法

      ③子类继承父类如果不想重写父类的抽象方法,要想不报错,这个子类也必须是抽象类

(3)好处

      ①用抽象类可以把子类中相同的代码,包括方法声明,都抽取到父类,这样可以更好的支持多            态,提高代码的灵活性

      ②我们不知道系统未来具体的业务实现时,我们可以先定义抽象类,将来让子类去实现,以方            便系统的扩展

(4)注意事项

      ①抽象类不一定有抽象方法,有抽象方法的类一定是抽象类

      ②类该有 的成员,抽象类都可以有

      ③一个类继承抽象类,要么重写全部抽象方法,要么这个类也必须定义成抽象类

四,接口(重点)

1.格式:public interface 接口名{}

2.组成:

(1)jdk8之前(不包括jdk8):接口中只能有常量和抽象方法

(2)jdk8之后(包括jdk8):除了常量和抽象方法,还还可以有默认方法,抽象方法(jdk9及以             后的版本才可以),类方法

      ①默认方法:默认方法:使用public dafault修饰,使用实现类的对象调用

      ②静态方法:public static修饰,必须用当前接口名调用

      ③私有方法:private修饰,jdk9开始才有的,只能在接口内部被调用

3.接口的实现

(1)接口不能创建对象

(2)接口是用来被类实现(implements)的,实现接口的类称为实现类

(3)实现类的接口,要么重写抽象方法,要么实现类本身定义为抽象类

(4)格式:修饰符 class 实现类 [extends 父类] implements 接口1, 接口2, 接口3 , ... {} 

(5)分类:单实现,多实现,继承并实现

4.好处

(1)弥补了类单继承的不足,一个类同时可以实现多个接口

(2)让程序可以面向接口编程,这样程序员就可以灵活方便的切换各种业务实现

5.注意事项

(1)一个接口继承多个接口,如果存在默认方法同名,子接口必须重写一次

(2)一个类实现多个接口,如果存在默认方法同名,实现类必须重写一次

(3)一个类继承父类,并实现接口,父类成员方法与接口默认方法同名,优先继承父类成员方法

五,内部类

1.成员内部类:就是类中的一个普通成员,类似于成员变量,成员方法

(1)创建对象的格式:外部类名.内部类名 对象名 = new  外部类(...).new 内部类(…)

(2)特点

      ①可以直接访问外部类的实例成员、静态成员

      ②可以拿到当前外部类对象,格式是:外部类名.this

2.静态内部类:有static修饰的内部类,属于外部类自己持有

(1)创建对象的格式:外部类名.内部类名 对象名 = new 外部类.内部类(…)

(2)特点:可以直接访问外部类的静态成员,不能直接访问外部类的实例成员

3.局部内部类:方法中定义的类,只能在当前方法中使用

4.匿名内部类(重点):是局部内部类的一种简化形式.本质上是一个子类/实现类对象

(1)特点:由底层,创建一个局部内部类,并会立即创建出一个子类对象

(2)作用:用于更方便的创建一个子类对象

(3)书写格式:new  类或接口(参数值…) { 类体(一般是方法重写);};

(4)应用场景:匿名内部类通常作为一个参数传输给方法

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值