前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java学习与应用(2)--面向对象

java学习与应用(2)--面向对象

作者头像
嘘、小点声
发布2020-02-18 13:51:05
5010
发布2020-02-18 13:51:05
举报
文章被收录于专栏:嘘、小点声嘘、小点声

继承关系

java的为单继承、多级继承。父类有直接父类和间接父类。最上层为Object类。 类的继承使用extends关键字。public class Child extends Parent{} 子类继承了父类的方法,重名变量和方法使用就近原则,方向为向父类方向查找。super关键字,在子类中调用父类的成员变量,方法。

重写方法

方法重写覆盖父类方法,使用@Overload注解,检测覆盖重写的有效性方法重写中: 子类方法的返回值必须<=父类方法的返回值范围。子类方法的权限必须[大于等于]父类方法的权限修饰符。 public > protected >(default) > private 创建新类并继承和重写满足设计需要。 子类中的构造方法,自动隐含super()的父类无参数构造方法,有参数父类构造方法手工写入调用并自动替换无参父类构造方法,父类构造方法只在子类构造方法使用调用。 说明总结,super用于父类访问,this用于本类访问。this和super的构造调用不能同时使用。

构造方法问题

抽象方法与抽象类

抽象方法,在抽象类public abstract class Animal中,抽象方法格式为public abstract void eat(); 不能直接创建抽象类对象,使用继承并重写抽象类中的方法。最后调用子类对象。 alt+回车,快捷创建重写抽象类方法。构造函数的调用模式以父子关系,相同。 抽象类的父类是抽象类,不一定完全重写父类所有抽象方法,但是需要使用的过程中,多次继承后必须为普通类,然后开辟空间使用。

接口

接口,多个类的公共规范。接口类例如:public interface 接口名称{},其中包含常量,抽象,默认,静态,私有方法。 接口中定义的方法为抽象方法。只做声明不做定义。没有方法体。[public] [abstract] 返回值类型方法名称(参数列表); 使用接口类,其子类为实现类或抽象类,使用继承方式为:public class Name implements MyIntegerfaceAbstract{},然后重写父类方法。

默认方法,[public] default void name{},用于解决父类接口升级的问题,自动让子类获取到父类的默认方法,并不需要一定重写。 静态方法,[public] static void name{},接口中的静态方法使用接口名称调用静态方法。 私有方法private void name{},方便类内的共有方法的简化和清晰等。static可选,用在static方法,普通default的方法,使用普通私有方法。 常量格式:[public] [static] [final] 数据类型常量名称=数据值。其中灰色部分可以省略,一般是用大写和下划线格式表示常量。 类与类之间是单继承的。直接父类只有一个。类与接口之间是多实现的。一个类可以实现多个接口。 接口与接口之间是多继承的。当多个父本中的普通抽象方法相同,因没有方法实现没有冲突,而default方法,在多继承后,需要重写方法,确定该default方法的实现,避免冲突。

对象的动态性

对象拥有多种形态,子类对象也是父类,可使用父类方法表示。使用时存在自动向上转型的过程。 编译过程中,看左边的父类方法,以确定编译通过,在运行过程中,看右边的new对象作为其方法实现。成员变量不同,在编译和运行过程中,都以左边父类为基准。 对象的向下转型,将父类对象还原为本来的子类对象。向下转型使用小括号,类似强制转换。 多态使得设计过程中,将多个不同的对象,转换为其公共的父类对象,调用各自子类的同名方法,自动实现的向上转型,调用向下。但是向下转型才能调用本来的代码。 instanceof用于判断多态中的向上转型的合法性,避免异常。

final修饰符

final修饰类:public final class,声明当前类没有子类,不可修改。 final修饰方法:public final 返回值 名称{} ,声明该方法不能被覆盖重写。而abstract关键字表示该方法一定被覆盖重写。 final修饰局部变量:该变量不能修改。final修饰后只能有一次赋值。final对引用类型修饰后,该引用类型的地址变量不可改变。 final修饰成员变量:变量不可变,和局部变量的修饰不同的是,修饰成员变量需要手动赋值,不会给默认值。默认值通过构造函数或者直接赋值方案实现。

面向对象的内存使用问题

修饰符与访问范围

继承的内存访问

成员内部类、匿名类

成员内部类,定义在类的内部,内部类可以访问该外部类的所有变量。创建内部类的格式:外部类.内部类 = new 外部类().内部类() 内部类访问外部类的重名变量,使用:外部类.this.变量获取。实质上内部类访问外部类的变量为常量不可改变。 局部内部类:定义在类的方法内部,在该方法中再次new出对象,用于调用该局部内部类。 内部类的外部类又相应的要求,如public 、default等 匿名内部类:接口的实现类只使用一次,则不需要单独定义。 接口 变量 = new 接口{},添加内部重写的方法。然后调用。 匿名内部类,省略了实现类,创建的对象只能使用一次。匿名对象,省略了对象名称,只能使用一次内部方法。匿名对象也常在一次性使用的场合。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-02-05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 继承关系
  • 重写方法
  • 构造方法问题
  • 抽象方法与抽象类
  • 接口
  • 对象的动态性
  • final修饰符
  • 面向对象的内存使用问题
  • 修饰符与访问范围
  • 继承的内存访问
  • 成员内部类、匿名类
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档