(二)继承

作者: Mando度 | 来源:发表于2019-05-13 08:08 被阅读0次

1.继承写法

公共继承(父类)

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

}


继承公共函数(子类)

package basicForMando;
//1.extends 父类
public class Penguin extends Animal {
//2.子类构造函数与父类构造函数参数应该相同,如果父类为隐式构造函数,子类可不定义
      public Penguin(String myName, int myid) {
          super(myName, myid);      
   }    
}

2.super&this

1.我们可以通过super关键字来实现对父类成员的访问,用来引用当前对象的父类。

2.super用法

  * 方法super.a();
  * 在子类构造函数写构造函数super();
  * 变量super.b
package basicForMando;
/*
 * 父类 
 * 成员变量 count
 * 构造函数 有参 无参
 *  普通函数    value()
 *  */
class Fu{
    String str="父类默认";
    int number  = 3;
    //父类构造函数
    Fu() {
        // TODO Auto-generated constructor stub
        System.out.println("fu constructor run ..无参父类.."   );
    }
    public void value() {
        // TODO Auto-generated method stub
        str ="父类value方法内";
    }
    Fu(int x){
        
        System.out.println("fu 构造函数 ..int.." + x  );
    }
    
}
class Zi extends Fu{
    //子类构造函数    写super 
    Zi(){
        
        System.out.println("zi  构造函数    ..无参.."+super.number  );
    };
    Zi(int x){
        super(x+1);
        System.out.println("zi 构造函数 ..int.." + x);
    };
     public void value() {
         str ="子类方法内";  
         System.out.println("str子="+str);
         super.value();      //调用父类的方法
          System.out.println("str="+str);   //这块str 为什么是父类的呀 
          System.out.println("父类str="+super.str);
          
     }
    
}
//继承
public class ExtendsDemo {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Zi z= new Zi();
        //      Zi  z= new Zi(1);
        z.value();
        
    }

}

print(输出)

fu constructor run ..无参父类..
zi 构造函数 ..无参..3
str子=子类方法内
str=父类value方法内
父类str=父类value方法内

3.this关键字:指向自己的引用。

3.implements (多继承的特性)

使用 implements 关键字可以变相的使java具有多继承的特性,使用范围为类继承接口的情况,可以同时继承多个接口(接口跟接口之间采用逗号分隔)。

public interface A { 
  public void eat(); 
  public void sleep(); 
} 
public interface B { 
  public void show(); 
} 
public class C implements A,B { }

4.final 修饰

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

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

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

5.重载和重写

class Animal{ 
  public void move(){ 
  System.out.println("动物可以移动"); 
  } 
} 
class Dog extends Animal{ 
  public void move(){ 
    System.out.println("狗可以跑和走");
  } 
} 
public class TestDog{ 
  public static void main(String args[]){ 
    Animal a = new Animal(); // Animal 对象 
    Animal b = new Dog(); // Dog 对象 
    a.move();// 执行 Animal 类的方法 
    b.move();//执行 Dog 类的方法 
  } 
}

相关文章

  • java基础面向对象之继承性(六-2)

    一、继承概念 二、继承的优点 三、继承体现

  • 二、继承

    (1)继承 <1>语法 原则 :父类/子类 基类/派生类是否可以是继承:【子类 is a 父类】...

  • (二)继承

    1.继承写法 公共继承(父类) 继承公共函数(子类) 2.super&this 1.我们可以通过super关键字来...

  • 原型继承

    原型链的继承 1.第一种继承方式(原型链继承) 2.第二种继承方式(第二种继承方式) 3.第三种继承方式(组合继承)

  • js的继承方式

    js的继承方式 一、原型链继承 原型继承的缺点: 二. 构造函数继承 构造函数继承的缺点: 三. 组合式继承 组合...

  • Python学习基础知识之 面向对象的简单基础,常见操作(单继承

    目录 一、继承介绍以及单继承 1.1程序中的继承(extend) 1.2单继承 1.3多继承 二、子类重写父类的同...

  • Java继承

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

  • C++学习三

    一、运算符重载 二、继承 1、基本 2、多继承、二义性 3、属性二义性 4、虚基类(虚继承) 三、多态(虚函数) ...

  • Java中关于多重继承的问题

    多重继承的含义 一.用接口实现多重继承 二.用内部类实现多重继承

  • Js的继承

    js的继承 @(js)[继承, js, 前端] 组合继承是原性链继承和构造函数继承的合体,它汲取了二者各自的有点,...

网友评论

    本文标题:(二)继承

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