第七章:继承,多态,抽象类与接口总结

7.1类的继承

集成在面向对象开发思想中是一个非常重要的概念,它使整个结构架构具有一定的弹性在程序中复用一些已经定义完善的类,不仅可以减少软件开发周期,也可以提高软件的可维护性和可扩展性。

在Java语言中,一个类继承另一个类需要使用关键字extends,关键字extends的使用方法如下。

class Child extends Parent{}

因为Java只支持单继承,及一个类只有一个父类,子类在继承父类后,创建子类对象的同时,也会调用父类的构造方法。

Java语言每个类只能继承一个父类。继承extends

父类和普通类写法相同

public class父类类名{

}

子类需要继承父类

public class 子类类名  extends父类类名{

}

所有类的构造方法第一行都有一个隐藏的“super();“

作用是在执行该构造方法之前调用其父类构造方法。

方法的重写

返回参数

相同,方法名相同,传入参数相同,方法体不同

7.2 Object类

getClass()方法

getClass()方法是Object类定义的方法,他返回对象执行时的class实例,然后使用此实例调用getclass()方法可以取得类的名称。语法如下

getClass().getname();

toString()方法

toString()方法的功能是将一个对象返回为字符串形式,它会返回一个String实例。在实际的应用中通常重写toString()方法,为对象提供一个特定的输出模式,当这个类转换为字符串,或与字符串连接时,将自动调用重写的toString()方法。

课堂代码:toString()方法

equals()方法

在Java语言中,有两种比较对象的方式,分别为“==”运算符与equals()方法。两者之间的区别在于“==”比较的是两个对象引用内存地址是否相等,二equals()方法比较的是两个对象的实际内容。

7.3对象类型的转换

转型:

向上转型可以被理解为子类类型的对象转换为父类类型的对象,即把子类类型的对象直接赋值给父类类型的对象。

向上转型:将子类对象赋值给父类引用,向上转型需要自动类型转换

Animal a=new Dog();

向下转型:将父类对象赋值给子类引用,向下转型需要进行强制类型转换

Dog a=(Dog)new Animal()

子类重写父类的方法

返回参数相同,方法名相同,传入参数相同,只有方法体不同。

7.4使用instanceof关键字判断对象类型

instanceofd的语法格式如下

myobject instanceof ExampleClass

myobject:某类对象的引用。

ExampleClass:某个类。

使用instanceof关键字的表达式返回值为布尔值。如果返回值为true,说明myobject对象为ExampleClass的实例对象,入关返回的值为false,说明myobject对象不是ExampleClassd的实例对象。

7.5方法的重载

Java 中的方法重载指的是在同一个类中定义多个方法,它们具有相同的名称,但是参数列表不同。方法重载允许使用相同的方法名称来执行不同的操作,以提高代码的灵活性和可读性。

在 Java 中,方法重载的规则如下:

方法名称必须相同。
方法的参数列表必须不同,可以包括参数的类型、数量和顺序。
方法的返回类型可以相同,也可以不同,但是不能仅仅通过返回类型的不同来区分方法。
方法的修饰符可以不同,例如可以有一个 public 方法和一个 private 方法,它们的名称和参数列表相同。

方法名相同,参数相同

课堂代码:

7.6 final关键字

是一个关键字,它可以用于修饰类、方法和变量,表示它们的值或引用是不可更改的。final 变量:用 final 关键字修饰的变量表示常量,即该变量的值一旦被赋值后就不能再被改变。可以在定义时直接赋值,也可以在构造方法中赋值
final修饰变量——不可以被修改(常量)
final修饰方法——不可以被重写
final修饰类——不可以被继承

 7.7 多态

  利用多态可以使程序具有良好的扩 展性,并可以对所有类对象进行通用的处理。在7.3 节甲己经学之过于类对象可以作为父类的对象实例使用,这种将子类对象视为父类对象的做法称为“向上转型”。
         假如现在要编写一个绘制图形的方法draw0,如果传入正方形对象就绘制正方形,如果传人园形
对象就绘制圆形,这种场景可以使用重载来实现,定义如下:
public void draw(Square s){       //绘制正方形的方法
}
public void draw(Circular c){         //绘制圆形的方法
}
        但是这种写法有个问题:正方形和圆形都是图形,这场景细分的重载方式不仅增加了代码量,还降低了 “易用度”。如果定义一个图形类,让它处理所有继承该类的对象,根据“向上转型”原则可以使每个继承图形类的对象作为 draw0方法的参数,然后在 draw0方法中做一些限定就可以根据不同图形类对象绘制相应的图形。这样处理能够很好地解决代码九余问题,同时程序也易于维护。

报错了!!!不想写了

1,抽象类

一般将父类定义成抽象类,需要使用这个父类进行继承与多态处理,使用abstract关键自定义的类为抽象类,而使用这个关键字定义的方法称为抽象方法,抽象方法没有方法体,这个方法本身没有任何意义,除非他被重写,而承载这个抽象方法的抽象类必须被继承,实际上抽象类除了被继承没有任何意义。定义抽象类语法如下。

public abstract class Parent{
       abstract void testAbstract();
}

抽象方法

修饰符  abstract  返回参数 方法名(传入参数);

抽象类 有抽象方法的类一定是抽象类

修饰符 abstract class 类名{}

普通类与抽象类在一起时会报错,解决方法有俩种:

第一种:把抽象类改变为普通类

第二种:将普通类改为抽象类

子类继承父类,父类有抽象方法如果子类不想有抽象方法可以采用方法重写。

2,接口

接口所有方法都是抽象方法

修饰符 interface 接口名{}

实现 implements

Java语言每个类可以实现多个接口

修饰符class 类名 implements 接口一,接口二........{}

instanceof 接口名 判断对象是否属于该接口的实现类

如果接口有很多抽象方法,类重写了几个方法报错后应该把类改为抽象类或把剩下的方法改为抽象方法。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值