Java面向对象进阶

IDEA快捷方式:

  • Shift+Alt+PgUp 向上移动选择代码
  • Shift+Alt+PgDn 向下移动选择代码

static关键字:

  • static修饰成员变量时,成员变量被所有对象共享,可以使类名调用,也可以使用对象名调用
  • static修饰成员函数,多用于测试类和工具类,可以类名调用,也可以对象名调用

类的分类:

  • Javabean类:用来描述一类事物的类
  • 测试类:用来检查其他类是否书写正确
  • 工具类:不是用来描述一类事物,而是帮我们做一些事情的类
    • 类名见名知意
    • 私有化构造方法
    • 方法定义为静态

static的注意事项:

  • 静态方法只能访问静态变量和静态方法
  • 非静态方法可以访问静态变量或者静态方法,也可以访问非静态的成员变量和非静态的成员方法
  • 静态方法中是没有this关键字

继承:public class son extends parent {}

继承的好处:

  • 可以把多个子类中重复的代码抽取到父类中,提高代码复用性
  • 子类可以在父类的基础上,增加其他的功能,使子类更强大

Java继承特点:只支持单继承,不支持多继承,但是可以多层继承,所有类都直接或者间接继承Object类

Java子类可以继承的内容:

  • 构造方法都不能继承
  • 成员变量都能继承,private修饰的变量不能直接使用
  • 不能继承private修饰的成员方法

this与super关键字:

  • this调用本类中的方法
  • super调用父类的方法

方法的重写:当父类的方法不能满足子类现在的需求时,需要进行方法重写。格式:子类和父类方法声明相同

@Override重写注解:

  1. @Override是放在重写后的方法上,检验子类重写时语法是否正确
  2. 加上注解后如果有红色波浪线,表示语法错误
  3. 建议重写方法都加@Override注解

方法重写注意事项:

  • 重写方法的名称,形参列表必须与父类的一致
  • 子类重写父类方法时,访问权限子类必须大于等于父类
  • 子类重写父类方法时,返回值;类型必须小于等于父类
  • 重写的方法尽量和父类保持一致
  • 私有方法不能被重写
  • 子类不能重写父类的静态方法,否则会报错

继承中构造方法的访问特点:

  • 子类不能继承父类的构造方法,但是可以通过super调用
  • 子类构造方法的第一行,有一个默认的super();
  • 默认先访问父类中无参的构造方法,再执行自己
  • 如果想要访问父类有参构造,必须手动书写

多态:同类型的对象,表现出的不同的形态。前提:有继承关系;有父类引用指向子类对象;有方法重写

多态调用成员的特点:

  • 调用成员函数:编译看左边,运行看左边
  • 调用成员方法:编译看左边,运行看右边

多态的优势:

  • 在多态形势下,右边对象可以实现解耦合,便于拓展和维护
  • 定义方法的时候,使用父类型作为参数,可以接受所有的子类对象,体现多态的扩展性与便利

多态的弊端:不能调用子类的特有功能

final关键字:

  • 表明方法是最终方法,不能被重写
  • 表明类是最终类,不能被继承
  • 叫做常量,只能被赋值一次

权限修饰符:

  • private:只能自己用
  • 空着不写(缺省/默认):只能本包中能用
  • protect:其他包的子类也能使用
  • public

代码块:

  • 局部代码块:
  • 构造代码块:
  • 静态代码块:

抽象类:

  • 使用abstract修饰类
  • 抽象类中可用abstract修饰方法,这种方法叫抽象方法
  • 继承抽象类的子类必须重写抽象方法

抽象类注意事项:

  • 抽象类不能实例化
  • 抽象类中不一定有抽象方法,有抽象方法一定是抽象类
  • 可以有构造方法
  • 抽象类的子类要么重写抽象类中的所有抽象方法,要么是抽象类

接口得定义和使用:

  • 接口用关键字interface来定义,public interface 接口名{}
  • 接口不能实例化
  • 接口和类之间是实现关系,通过implements关键字表示,public class 类名 implements 接口名{}
  • 接口的子类要么重写接口中所有的抽象方法,要么是抽象类
  • 借口和类的实现关系,可以单实现,也可以多实现。public class 类名 implements 接口名1,接口名2{}
  • 实现类还可以在继承一个类的同时实现多个接口。public class 类名 extends 父类 implements 接口名1,接口名2{}

接口中成员的特点:

  • 成员变量:只能是常量,默认修饰符:public static final
  • 构造方法:无
  • 成员变量:只能有抽象方法,默认修饰符:public abstract

接口和类之间的关系:

  • 类和类之间:继承关系,只能单继承,不能多继承,但可以多层继承
  • 类和接口之间:可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口
  • 接口和接口之间:继承关系,可以单继承,也可以多继承

JDK8以后接口中新增的方法:

  • 允许在接口中定义默认方法,需要使用关键字default修饰。public default 返回值类型 方法名(参数列表){}
    • 默认方法不是抽象方法,所以不强制重写
    • 如果实现了多个接口,多个接口中存在相同名字的默认方法,子类就必须对该方法进行重写
    • default不能省略
  • 允许在接口中定义静态方法,需要用static修饰。public static 返回值类型 方法名(参数列表){}
    • 静态方法只能通过接口名调用,不能通过实现类名或者对象名调用
    • public可以省略,static不能省略
  • JDK9接口中新增私有方法。private 返回值类型 方法名(参数列表){};private static 返回值类型 方法名(参数列表){}

设配器设计模式:设计模式是一套被反复使用、多数人知晓的、经过分类编目的代码设计经验的总结。使用设计模式是为了可重用代码,让代码更容易被他人理解,保证代码可靠性和程序的重要性。

  • 适配器设计模式是为了解决接口与接口实现类之间的矛盾问题。
  • 使用情景:当一个接口中抽象方法过多,但只需要使用其他一部分的时候,就可以使用适配器
  • 书写步骤:编写中间类XXXXAdapter,实现对应的接口,对接口中的抽象方法进行空实现,让真正的实现类继承中间类,并重写需要用的方法。

类的五大成员:

  • 属性
  • 方法
  • 构造方法
  • 代码块
  • 内部类:在一个类的里面再定义一个类

内部类的访问特点:

  • 内部类可以直接访问外部类的成员,包括私有
  • 外部类要访问内部类的成员,必须创建对象

内部类的分类:

  • 成员内部类:写在成员位置的,属于外部类的成员。成员内部类可以被一些修饰符所修饰,如:private,默认,protected等
  • 静态内部类:成员内部类使用static修饰
  • 局部内部类:将内部类定义在方法里面
  • 匿名内部类:隐藏名字的内部类。new 类名或者接口名(){ 重写方法; };
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值