Java知识24 继承(重点巩固)【多测师】
一、继承就是子类继承父类的特征和行为 使得子类对象(实例)具有父类的实例域和方法 子类从父类继承方法,使得子类具有父类相同的行为 动物:有 食草动物 和食肉动物 但是俩者的属性和行为上有差别、所以子类会具有父类的一般特性也会具有自身的特性 类继承格式: Java中可以申明一个类是从另外一个类继承而来 class 父类{ } class 子类 extends 父类{ } 二、公共父类如下: public class Animal { private String name; private int id; public Animal(String myName, int myid) { name = myName; id = myid; } public void eat() { System.out.println(name + "正在吃"); } public void sleep() { System.out.println(name + "正在睡"); } public void introduction() { System.out.println("大家好!我是" + id + "号" + name + "."); } } 三、Animal作为一个父类,企鹅类和老鼠类继承这个类之后 就具有父类当中的属性和方法 public class Penguin extends Animal { public Penguin(String myName, int myid) { super(myName, myid); } } 四、继承的特性 1.子类有父类非private的属性和方法 2.子类拥有自己的属性和方法可以对父类扩展,子类可以用自己的方式实父类的方法 3.Java可以单继承也可以多重继承 单继承就是一个子类继承一个父类 多重继承就是a类继承b类 b类继承c类 五、继承关键字 俩个:extends和implements 俩个关键字来实现继承 所有的类继续于Java.lang.Object 如果没有这俩个关键字默认继承Object(这个类在Java.lang中不需要import) 六、extends关键字 Java中,类的继承是单一继承,一个子类只能拥有一个父类 所以extends只能继承一个类 七、implements关键字 使得implements关键字可以使得Java具有多继承的特性,使用的情况:类继承接口的情况 可以同时继承多个接口(接口和接口之间采用逗号分隔) public interface A { public void eat(); public void sleep(); } public interface B{ public void show(); } public class C implements A, B { } 八、super和this关键字 super关键字:可以通过super关键字来实现对父类成员的访问 用来引用当前对象的父类 this:指向自己的引用 代码如下:创建俩个Java文件 先调用了一次Animal类的eat方法 然后再调用了Dog子类的自己的方法和父类的方法 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(); } } 运行结果: animal : eat dog : eat animal : eat 九、final关键字 声明类可以把类定义为不能继承的 即最终类,或者用于修饰方法 该方法不能被子类重写 声明类: final class 类名 {//类体} 声明方法: 修饰符(public/private/default/protected) final 返回值类型 方法名(){//方法体} 注意:实例变量也可以被定义为 final,被定义为 final 的变量不能被修改。被声明为 final 类的方法自动地声明为 final,但是实例变量并不是 final 十、构造器 子类不能继承父类的构造器(构造方法和函数) 但父类的构造器带有参数,必须在子类构造器通过super关键字调用父类的构造器 如果父类有无参构造器,则在子类构造器用super调用父类构造器不是必须的,没有super关键字 系统会自动调用父类的无参构造器 重点: 1.Java要在子类调用父类方法 需要使用关键字super 2.为什么用继承? 从已有的类派生新的类,称为继承,易于维护和理解 3.父类称为:超类和基类 子类为派生类,次类,扩展类 4.子类一般比父类包含更多的数据域和方法 5.父类中的private数据域在子类不可见,在子类不能直接使用 6.Java只允许单一继承(即一个子类只能有一个直接父类) C++可以多重继承 7.super关键字: 可以调用父类的构造方法,调用父类的方法,访问父类的数据域 静态方法中不能使用super关键字 8.this关键字 表示当前对象,调用当前类的构造方法 9.final修饰类:类不可以被继承 修饰类中的方法可以被继承但继承后不能被重写