美文网首页
Java继承原理

Java继承原理

作者: 952625a28d0d | 来源:发表于2017-07-06 11:14 被阅读248次
package com.example;

import java.security.PublicKey;

/**
 * Created by JiaYuanFa on 2017/7/6.
 */

/*
一:为什么需要继承?
 public class Teacher{
    String name;
    String school;
    public void run() {
        System.out.println("在跑步");
    }
    public void jiaoShu() {
        System.out.println("老师在教书");
    }
 }

 public class Wocker{
    String name;
    String factory;
    public void run(){
         System.out.println("在跑步");
    }
    public void ganhuo(){
         System.out.println("工人在干活");
    }
 }
  上述设计类的过程有重复的代码:这个在软件中叫代码的冗余,我们需要解决,作为好的程序不能出现重复的代码,所以有了继承
 二:什么是继承
 继承是指继承者拥有被继承者的某些特征
 有点像儿子继承老子,但是儿子也有自己独特的地方
 继承是类与类之间的关系,是群体与群体之间的关系
 继承有没有条件?
 现实生活中需要血缘关系
 类与类:
 猪类与人类有没有继承关系?
 学生类与人类有没有继承关系?
 怎么去判断一个类与另一个类有没有关系?
 继承条件:
 1:具备"is-a"的关系
 "is-a":一个类的对象也是另一个类的对象
 2:关键字
 extends
 三:怎么使用继承
 1:找个各个类共同的父类,然后把相同属性和方法放到父类中
    Teacher与Worker类共同的父类是:Human类
 2: 各个类去继承父类
    继承类叫做子类
    被继承的类叫做父类
    // A类继承B类
    public class A extentds B {
    }
 3: 定义一个子类,去拿父类的属性
    子类没有的属性 会找父类要
 四:继承原理
    1:java中的继承不是真正的继承

 */

class Human {
    String name;
    public void run(){
        System.out.println("在跑步");
    }
}

class Teacher extends Human {
    // 相当于有了Human的非私有属性和方法
    String school;
    public void jiaoShu() {
        System.out.println("老师在教书");
    }
}

class Worker extends Human {
    String factory;
    public void ganhuo(){
        System.out.println("工人在干活");
    }
}

/*
四:继承的原理
    1:java的继承不是真正的继承
        (1):每次构造子类对象都是先去构造父类对象
         super()调用父类无参数的构造方法 必须在第一句
         super(参数)调用父类有参的构造方法 必须在第一句
         this();调用当前类的无参构造方法 必须在第一句
         this(参数);调用当前类的有参构造方法 必须在第一句
         super和this不可能同时出现在同一个构造方法中!
    2:java的继承是单继承,一个子类只能继承一个父类
    3:父类的什么属性不能被子类继承
        (1)私有的属性和方法不能被子类继承
        (2)构造方法不能被子类继承 构造方法是描述对象产生的过程 所以不能被继承
    4:当一个父类只有一个有参数的构造方法的时候,子类必须手动通过super(参数)调用父类的构造方法 否则报错
 */
public class JiCheng {
    public static void main(String[] args) {
//        Teacher teacher = new Teacher();
//        teacher.run();
//        Worker worker = new Worker();
//        worker.run();
        Son son = new Son();
        Son son2 = new Son();
    }
}

class Father {
    String name = "拉登";
    public Father() {
        System.out.println("父亲出生了");
    }
}

class Son extends Father {
    String name = "二狗子";
    public Son() {
        /*
        // 情况一 我们没有写super()
        (1) : 每次构造子类对象都是先构造父类对象
        (2):那么是什么原因造成Son类构造的时候执行了父类的构造方法呢?也就是有个super()你写不写都存在,这个方法就是用来调用父类的无参数的构造方法
        // 情况二 我们自己写super方法
        */
        super();
        System.out.println("儿子出生了");
        System.out.println(super.name);   // 儿子有的属性 先打印儿子的 要想拿到父类的属性 需要在属性前面加上super
    }

    public Son(int i) {
        this();
    }
}```

相关文章

  • Java继承原理

  • AQS(抽象队列同步器)源码初窥

    本质 java锁的实现原理就是继承AQS抽象类java锁继承Lock接口, 而Lock需要实现的接口依赖AQS的实...

  • jsp

    jsp就是:Java Server Page,在html页面中编写Java代码的页面 运行原理:jsp文件继承Ht...

  • Java Map原理备忘(二)

    接上一次Java Map原理备忘。LinkedHashMap继承HashMap实现Map接口。LinkedHash...

  • Android ClassLoader原理(一)

    Android的类加载机制遵循Java的双亲委派原理。其继承关系如下: PathClassLoader和DexCl...

  • java并发编程(一)

    **java多线程编程(一)** 基本实现方式及同步原理 --- 三种实现方式: 1、继承Thr...

  • JS继承

    简介 JS的继承对于Java的继承其实不太是一回事,JS的继承的原理就是用原型链。 假设 假设我们有两个类: Hu...

  • 枚举资料笔记

    概念:被enum关键字修饰的类型就是枚举类型,枚举类型都隐式继承Enum,根据java不可以多继承的原理,不能再继...

  • Java继承

    一、Java继承详解 Java继承目录:1.为什么要”继承“?2.继承的类型2.1 单继承2.2 多重继承2.3 ...

  • Java继承

    Java继承 一、继承类型 Java不支持多继承,但是支持多重继承 二、继承的特性 子类拥有父类非 private...

网友评论

      本文标题:Java继承原理

      本文链接:https://www.haomeiwen.com/subject/iukhhxtx.html