dtcms模板 数据算法 animation random node emacs get grep android项目实战 webpack视频 jquery获取最后一个子元素 linux源码在线阅读 mysql重新初始化 matlab向量的模 centos7安装gcc tomcat调优和jvm调优 内存计算 jquery validate python实例 mysql临时表 python基础知识 java中string java删除数组元素 java正则表达 java继承关键字 java链接mysql数据库 java中接口的定义 java泛型方法 javascript基础 右键菜单背景 网络文件服务器 go程序设计语言 c4d挤压 脚本网站 只狼全鬼佛 炫舞爱的惊喜 启用宏在哪里设置 edius调色 手机下载微博客户端 cad怎么拉伸图形
当前位置: 首页 > 学习教程  > 编程语言

java:面向对象-继承

2021/2/13 17:19:15 文章标签: 测试文章如有侵权请发送至邮箱809451989@qq.com投诉后文章立即删除

概念 继承就是子类继承父类的特征和行为 写法 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…

概念

继承就是子类继承父类的特征和行为

写法

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 + "."); 
    } 
}

企鹅类:

public class Penguin extends Animal { 
    public Penguin(String myName, int myid) { 
        super(myName, myid); 
    } 
}

老鼠类:

public class Mouse extends Animal { 
    public Mouse(String myName, int myid) { 
        super(myName, myid); 
    } 
}

注:一个类的父类只能有一个,也就是java不支持多继承

继承范围

父类的 private 修饰的属性或方法不能被子类继承。

继承的关键字

继承可以使用 extends 和 implements 这两个关键字来实现继承,而且所有的类都是继承于 java.lang.Object,当一个类没有继承的两个关键字,则默认继承object(这个类在 java.lang 包中,所以不需要 import)祖先类。

extends:

public class Animal { 
    private String name;   
    private int id; 
    public Animal(String myName, String myid) { 
        //初始化属性值
    } 
    public void eat() {  //吃东西方法的具体实现  } 
    public void sleep() { //睡觉方法的具体实现  } 
} 
 
public class Penguin  extends  Animal{ 
}

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关键字:
表示父类对象的引用。
实现对父类成员的访问,用来引用当前对象的父类。
super()就调用了父类的构造方法,必须位于第一行

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 调用父类方法
  }
}

this关键字:
指向自己的引用,例子同上。

final关键字:
可以把类定义为不能继承的,即最终类;或者用于修饰方法,该方法不能被子类重写:

// 声明类
final class 类名 {//类体}
// 声明方法
修饰符(public/private/default/protected) final 返回值类型 方法名(){//方法体}

注:实例变量也可以被定义为 final,被定义为 final 的变量不能被修改。被声明为 final 类的方法自动地声明为 final,但是实例变量并不是 final

构造函数的继承

父类:

class SuperClass {
  private int n;
  SuperClass(){
    System.out.println("SuperClass()");
  }
  SuperClass(int n) {
    System.out.println("SuperClass(int n)");
    this.n = n;
  }
}

子类

// SubClass 类继承
class SubClass extends SuperClass{
  private int n;
  
  SubClass(){ // 自动调用父类的无参数构造器
    System.out.println("SubClass");
  }  
  
  public SubClass(int n){ 
    super(300);  // 调用父类中带有参数的构造器
    System.out.println("SubClass(int n):"+n);
    this.n = n;
  }
}

运行:

SubClass sc1 = new SubClass();
SubClass sc2 = new SubClass(100); 
// SuperClass()
// SubClass
// SuperClass(int n)
// SubClass(int n):100

方法重写(override)

子类中的方法与父类中的方法的名称、参数列表、返回类型一样,我们就说子类重写了父类的方法

  • 方法在父类中含有
  • 方法名相同
  • 参数列表相同
  • 返回类型相同或是子类
  • 访问修饰符不能缩小
  • 子类不能抛出比父类更大的异常
class SubClass extends SuperClass{
  // @override改注解表示当前的方法是一个重写方法,可有可无
  @override
  cry () {
    System.out.println("我是子类,重写了父类的cry方法。。。");
  }
}

本文链接: http://www.dtmao.cc/news_show_700120.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?