面向对象_继承

一、继承的基本概念:

    1、继承是面向对象的三大特性之一

     2、被继承的类称为父类(超类),继承父类的类称为子类(派生类)
     3、继承是指一个对象直接使用另一个对象的属性和方法(继承之后才能使用)
     4、通过继承可以实现代码重用

二、使用继承的要求

    1、将每个类的共性提取出来单独放在一个类中来描述

     2、然后让这个类与其他每个类之间有点关系这样就可以了

     3、注意:千万不要为了获取其他类的功能,简化代码而继承

     4、必须是类与类之间有所属关系才可以继承

     5、例如:将学生和工人的共性(共同属性,共同方法)描述提取出来。单独进行描述。只要让学生和工人与单独描述的这个类有关系,就可以了。

三、继承的好处:
        1、提高了代码的复用性
        2、让类与类之间产生了关系,有了这个关系,才有了多态的特性

四、继承的语法:

  

public class extendsDemo {
    public static void main(String[] args) {
        HomeChicken c1 = new HomeChicken();
        c1.desc();
    }
}

//父类
class Chicken{
    String name;

    public Chicken(){}

    public Chicken(String name) {
        super();
        this.name = name;
    }

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

    public void desc(){
        System.out.println("我是一只战斗鸡");
    }
}

//子类
class HomeChicken extends Chicken{

}

//子类
class Pheasant extends Chicken{

}

五、代码实例:  

 1 public class ExtendsDemo1 {
 2     public static void main(String[] args) {
 3
 4     }
 5 }
 6 class Person{
 7     String name;
 8     int age;
 9 }
10 class Student extends Person{
11     void study(){
12         System.out.println("good study");
13     }
14 }
15 class Worker extends Person{
16     void work(){
17         System.out.println("good work");
18     }
19 }

六、继承中使用时需要注意的

    1、java不支持多继承:

        java语言中只支持单继承不支持多继承(一个类继承了另一个类就不能在继承其他类了)

        因为多继承容易带来安全隐患 当多个父类中定义了相同功能,但功能内容不同时,子类对象不确定要运行哪一个。

        但是java保留了这种机制,并用另一种体现形式来完成表现叫做多实现

    2、java支持多层继承:

        java语言中支持多层继承 ,就是一个继承体系

    3、如何使用一个继承体系中的功能:

        想要使用体系,先查阅体系父类的描述,因为父类中定义的是该体系中的共性功能通过了解共性功能,就可以知道该体系的基本功能

    4、那么具体调用时,要创建最子类的对象,  为什么呢?
                 一、是因为有可能父类不能创建对象(抽象类)
                   二、是创建子类对象可以使用更多的功能,包括基本的也包括特有的
                 简单一句话就是:查阅父类功能,创建子类对象使用功能

七、事物与事物之间的关系

      1、继承(谁是谁的一种)

      2、集聚 (谁里面有谁):

          聚合(就好像一个班级,少了一个人没什么关系,紧密程度没那么紧)

            组合(就好像手是人身体的一部分,少了关系很大,紧密程度很紧)

时间: 2024-07-29 09:20:42

面向对象_继承的相关文章

面向对象_继承之后类成员的特点

类中的成员:变量,函数,构造函数 1.变量 如果子类中出现非私有的同名成员变量时 子类要访问本类中的变量用this,this代表的是本类对象的引用 子类要访问父类中的同名变量,用super,super代表的是父类空间 1 public class ExtendsDemo3 { 2 public static void main(String[] args) { 3 Zi z=new Zi();//建立了子类对象,加载子类,但在加载子类前会先加载父类 4 z.show(); 5 //System.

Java 面向对象_继承

继承 在继承的关系中,子类就是一个父类,也就是说,子类可以被当做父类看待,例如:父类是员工,子类是程序员,那么程序员就是一个员工,代码示例: // 员工类 public class Employee{ String name; int age; } // 程序员类(继承员工类) public class Programer extends Employee{ } // 主方法 public class Extends { public static void main(String[] args

JavaSE知识-08(面向对象_继承&方法&final)

代码块的概述和分类 根据其位置和声明的不同,代码块可以分为局部代码块,构造代码块,静态代码块,同步代码块. 常见代码块的应用 a:局部代码块 在方法中出现:限定变量生命周期,及早释放,提高内存利用率 b:构造代码块 (初始化块) 在类中方法外出现:多个构造方法方法中相同的代码存放到一起,每次调用构造都执行,并且在构造方法前执行 c:静态代码块 在类中方法外出现,并加上static修饰:用于给类进行初始化,在加载的时候就执行,并且只执行一次. 一般用于加载驱动 class Demo1_Code {

python自动化_day6_面向对象_组合,继承,多态

复习:http://www.cnblogs.com/Eva-J/articles/7228075.html 模块 1 import collections,os,sys,re,random,time 2 collections.defaultdict() #默认字典 默认字典的优势就是该字典中如果没有元素就直接添加 3 collections.OrderedDict() #有序字典 字典是有序的可以直接用索引调用 4 collections.namedtuple() #可命名元祖 可以把两个元组

多线程_创建线程_继承Thread类

public class ThreadDemo {   public static void main(String[] args){         Demo d = new Demo();   d.start();      for(int i = 0;i < 100;i++){      System.out.println("MainThread" + i);   }   } } class Demo extends Thread {   public void run(

面向对象之继承

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 面向对象之继承 { class Program { static void Main(string[] args) { //记者:我是记者,我的爱好是偷拍,我的年龄34,我是一个男的 //程序员:我叫孙权 我的年龄23 我是男生 我的工作年限是3年

黑马程序员——Java基础---面向对象之继承

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流!                                                                 面向对象之继承  一:继承(extends) (1)继承的体系结构:就是对要描述的事物进行不断的向上抽取,就出现了体系结构.

javascript面向对象程序设计——继承初步(by vczero)

上一篇说了javascript的封装,没有刻意去说javascript的“共有函数”.“私有函数”,因为个人觉得这只是作用域的问题,我们不能刻意的模仿强类型语言(C++/JAVA)而去编写代码.尊重每一门语言的特性才是最为重要的. 一.基于prototype原型的继承 1 var Person = function(name, age){ 2 this.name = name; 3 this.age = age; 4 } 5 6 Person.prototype = { 7 addUser: f

C++ Primer 学习笔记_69_面向对象编程 --继承情况下的类作用域

面向对象编程 --继承情况下的类作用域 引言: 在继承情况下,派生类的作用域嵌套在基类作用域中:如果不能在派生类作用域中确定名字,就在外围基类作用域中查找该名字的定义. 正是这种类作用域的层次嵌套使我们能够直接访问基类的成员,就好像这些成员是派生类成员一样: Bulk_item bulk; cout << bulk.book() << endl; 名字book的使用将这样确定[先派生->后基类]: 1)bulk是Bulk_item类对象,在Bulk_item类中查找,找不到名