java基础中的继承和接口
继承是面向对象的三大特征,继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
类的继承格式,在java中需要extends关键字可以申明一个类是从另外的一个类继承而来的。
class 父类 { } class 子类 extends 父类 { }
继承类型
java不支持多继承,但支持多重继承。
单继承 public class A{ ...... } public classs B extends A{ ...... }
由class B拿到class A
多重继承 public class A{ ... } public class B extends A{ .... } public class C extends B{ ..... }
由孙类C拿到儿类继承父类的数据
不同类继承同一个类 public class A {....} public class B extends A{.....} public class C extends A{......}
(1)java中不支持多继承
继承的特性
子类拥有父类非 private 的属性、方法。
子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。
子类可以用自己的方式实现父类的方法。
继承关键字的关键字是exdents关键字来实现
extends关键字
(2)在java中,类的继承只能是单一的继承,一个子类只能拥有一个父类,所以extends只能继承一个类。
super和this关键字
class Animal { void eat() { System.out.println("animal : eat"); } } class Dog extends Animal { void eat() { System.out.println("dog : eat"); } void eatTest() { this.eat(); // this 调用自己的方法 super.eat(); // super 调用父类方法 } } public class Test { public static void main(String[] args) { Animal a = new Animal(); a.eat(); Dog d = new Dog(); d.eatTest(); } }
Java 接口
接口,英文:Interface,在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。
接口与类相似点:
一个接口可以有多个方法
接口文件保存在 .java 结尾的文件中,文件名使用接口名。
接口的字节码文件保存在 .class 结尾的文件中。
接口相应的字节码文件必须在与包名称相匹配的目录结构中。
接口与类的区别:
接口不能用于实例化对象。
接口没有构造方法。
接口中所有的方法必须是抽象方法,Java 8 之后 接口中可以使用 default 关键字修饰的非抽象方法。
接口不能包含成员变量,除了 static 和 final 变量。
接口不是被类继承了,而是要被类实现。
接口支持多继承。
接口的声明
[可见度] interface 接口名称 [extends 其他的接口名] { // 声明变量 // 抽象方法 }
Interface关键字用来声明一个接口
public interface NameOfInterface { //任何类型 final, static 字段 //抽象方法 }
接口有以下特性:
接口是隐式抽象的,当声明一个接口的时候,不必使用abstract关键字。
接口中每一个方法也是隐式抽象的,声明时同样不需要abstract关键字。
接口中的方法都是公有的。
实例
interface Animal { public void eat(); public void travel(); }
接口语法:
...implements 接口名称[, 其他接口名称, 其他接口名称..., ...] ...