文档章节

EXTENDS ,CONSTRUCTOR理解

rosegraces
 rosegraces
发布于 2016/07/17 10:51
字数 741
阅读 12
收藏 0

构造方法和成员函数的理解 构造方法是初始化一个类的对象时调用的,没有返回值,名字必须要与类的名字一致 成员函数是由类对象主动调用的,使用点操作符调用。 构造函数是赋予对象"生命特征的本身",成员方法是该对象具有的"行为",构造方法在建立对象时由系统调用。 this关键字: (1)在类中方法定义中使用this关键字代表使用该方法的对象的引用。 (2) 当必须指出当前使用方法的对象是谁要用this关键字 (3)this可以处理方法中成员变量和参数重名的情况。 (4)this可以看作是一个变量,它的值是当前对象的引用

package TestExtends;

/**
 * Created by Admin on 2016/7/17.
 */
public class TestCar {
    private int width=0;
    private int height=0;
    TestCar(int width,int height)
    { this.height = height;//处理方法中成员变量和参数重名的情况
      this.width = width;
    }
    TestCar increment(){
        return this;
    }
    void print(){
        System.out.println("。。。。");
    }
    public static void main(String[] args){
        TestCar testCar = new TestCar(100,100);
        if(testCar ==  testCar.increment()){
            System.out.print("like");
        }
    }



}

继承 “A subclass inherits all the members (fields, methods, and nested classes) from its superclass. Constructors are not members, so they are not inherited by subclasses, but the constructor of the superclass can be invoked from the subclass.”

super关键字:
通过super可以调用父类的构造方法,还可以调用父类的方法
package TestExtends;

/**
 * Created by Admin on 2016/7/17.
 */
public class FatherClass {
    public  FatherClass(){
        System.out.println("这是我父亲大人");
    }
     void run(){
       System.out.println("我的父亲是运动员");
   }
}
package TestExtends;

/**
 * Created by Admin on 2016/7/17.
 */
public class ChildClass extends  FatherClass {
  public ChildClass(){
      super.run();//调用父类的方法
      System.out.println("我是孩子");
  }
}
package TestExtends;

/**
 * Created by Admin on 2016/7/17.
 */
public class TestMain {
    public static void  main(String[] args){
        ChildClass child = new ChildClass();
    }
}
//对象转型
package ConvertClass;

/**
 * Created by Admin on 2016/7/17.
 */
class Zone {
    public String name;
    Zone(String name){
        this.name = name;
    }
}
class Cat extends  Zone{
   public String furcolor;
    Cat(String n,String c){
        super(n);
        furcolor = c;
    }
}
public class Animal{
    public static void main(String[] args){
        Cat cat = new Cat("xiaomiao","white");
        Zone zone = new Zone("huzi");
        Zone z =  new Cat("dongwu","white");//父类的引用指向子类的对象  多态的表现
        System.out.println(z.name);//只能看见z的属性,不能看见Cat的属性
        System.out.println(z instanceof  Zone);//true
        System.out.println(z instanceof   Cat);//true
        System.out.println(zone instanceof  Cat);//false
        Cat _zone =(Cat)z;
        System.out.println( _zone instanceof  Cat);//true
        System.out.println( _zone.name);//dongwu

    }

}
//多态  即动态绑定:在执行期间而不是编译期间判断引用对象的实际类型,根据其实际的类型调用其相应的方法
package duotai;

import ConvertClass.Animal;

/**
 * Created by Admin on 2016/7/17.
 */
class Anmail{
    private String name;
    Anmail(String name){
        this.name = name;
    }
   public void enjoy(){
       System.out.println("叫声.....");
   }
}
class Cat extends  Anmail{
    private String furColor;
    Cat(String n,String furColor){
        super(n);
        this.furColor = furColor;
    }
    public void enjoy(){//重写 override
        System.out.println("喵喵");
    }
}
class Dog extends Anmail{
    private String eye;
    Dog(String n,String eye){
        super(n);
        this.eye = eye;
    }
    public void enjoy(){
        System.out.println("汪汪");
    }

}
class Gril{
    private String name;
    private  Anmail pet;
    Gril(String name,Anmail pet){
        this.name = name;
        this.pet = pet;
    }
   public void myenjoy(){
       pet.enjoy();
   }
}
public class TestDuotai {

     public static void main(String[] args){
     Cat cat = new Cat("xiaomao","white fur");
     Dog dog = new Dog("xingu","blue eye");
         Gril gil = new Gril("lili",cat);
       gil.myenjoy();//动态绑定  实际对象
     }

}


© 著作权归作者所有

上一篇: sql语句的小总结
下一篇: 单例模式
rosegraces
粉丝 4
博文 14
码字总数 5628
作品 0
南宁
程序员
私信 提问
再理解es6 中的 class super extends

说明 适用于 es6 初学者 理解 class 的使用 extends 继承 class 可以通过 extends 关键字实现继承,这比 ES5 的通过修改原型链实现继承,要清晰和方便很多。 上面代码定义了一个ColorPoint类...

Pandaaa
2018/07/09
0
0
为什么说ES6的class是语法糖?

0. 前言 我们带着问题去阅读本文: 为什么说ES6的class是语法糖? class是原型的语法糖吗? 那又是如何使用原型来实现class这一语法糖的呢? 1. 基于Prototype的OOP 先来看一个prototype的例子...

pureJy
03/08
0
0
聊一聊ES6中class的使用

javascript传统做法是当生成一个对象实例,需要定义构造函数,然后通过new的方式完成。 javacript中只有对象,没有类。它是是基于原型的语言,原型对象是新对象的模板,它将自身的属性共享给...

戎马
2018/08/27
0
0
React 深入系列5:事件处理

文:徐超,《React进阶之路》作者 授权发布,转载请注明作者及出处 --- React 深入系列5:事件处理 React 深入系列,深入讲解了React中的重点概念、特性和模式等,旨在帮助大家加深对React的...

iKcamp
2018/05/04
33
0
React 手动实现 this 的绑定的几种方法

一 :bind 方法。 在{}中,这个方法可以帮助我们绑定事件处理器内的 this ,并可以向事件处理器中传递参数 class Hello extends React.Component { //最后一个参数是事件对象 handleClick(pa...

沉迷学习中
2018/03/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Dubbo-自适应拓展机制

背景 在 Dubbo 中,很多拓展都是通过 SPI 机制进行加载的,比如 Protocol、Cluster、LoadBalance 等,这些都是Dubbo的基础组件。这些基础组件的拓展不是在系统框架启动阶段被加载,而是拓展方...

rock-man
11分钟前
2
0
Kali安装fcitx输入法(五笔)

安装fcitx > sudo apt-get install fcitx-rime fcitx-config-gtk3 重启 > sudo reboot fcitx配置 效果就是这样 配置输入法切换 系统设置...

yeahlife
13分钟前
2
0
IE之css3效果兼容

本文转载于:专业的前端网站▷IE之css3效果兼容 一、兼容css阴影效果(ie滤镜) 1.Shadow,阴影 .shadow { -moz-box-shadow: 3px 3px 4px #000; -webkit-box-shadow: 3px 3px 4px #000; box-sha...

前端老手
16分钟前
2
0
NiushopB2C开源商城功能列表说明:

B2C单商户免费版:PC商城+微商城 B2C单商户标准版:PC商城+微商城组合套餐+阶梯优惠核销功能 B2C单商户企业版:PC商城+微商城拼团+组合套餐阶梯优惠+核销功能 B2C单商户分销版:PC商城+微商城...

niushop-芳
18分钟前
2
0
图片如何转GIF图片呢

如何将生活中拍摄的好玩有趣的图片制作成GIF动图呢?相信很多小伙伴都不知道要如何制作,其实制作方法非常的简单,下面分享一个图片转GIF动图的方法,希望这个方法能够帮助大家在与好友斗图时...

白米稀饭2019
25分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部