zoukankan      html  css  js  c++  java
  • JAVA 基础 / 第二十二课: 类和对象 / 什么是JAVA中的引用? 继承 ?

    2018-03-14

    一、引用的概念,如果一个变量的类型是 类类型,而非基本类型,那么该变量又叫做引用。

    1、引用和指向:

    new Hero();

    代表创建了一个Hero对象
    但是也仅仅是创建了一个对象,没有办法访问它
    为了访问这个对象,会使用引用来代表这个对象

    Hero h = new Hero();

    h这个变量是Hero类型,又叫做引用
    =的意思指的h这个引用代表右侧创建的对象
    代表” 在面向对象里,又叫做“指向”

    public class Hero {      
        String name; //姓名      
        float hp; //血量      
        float armor; //护甲      
        int moveSpeed; //移动速度      
        public static void main(String[] args) {
            //创建一个对象
            new Hero();       
            //使用一个引用来指向这个对象
            Hero h = new Hero();        
        }        
    }

    2、多个引用,一个对象:

    引用有多个,但是对象只有一个。
    在这个例子里,所有引用都指向了同一个对象。
    对象就像 "房产", 引用就像"房产证"
    房产证的复印件可以有多张,但是真正的"房产" 只有这么一处

    public class Hero {
          
        String name; //姓名    
        float hp; //血量    
        float armor; //护甲      
        int moveSpeed; //移动速度      
        public static void main(String[] args) {
             
            //使用一个引用来指向这个对象
            Hero h1 = new Hero();
            Hero h2 = h1;  //h2指向h1所指向的对象
            Hero h3 = h1;
            Hero h4 = h1;
            Hero h5 = h4;        
            //h1,h2,h3,h4,h5 五个引用,都指向同一个对象         
        }       
    }

    3、一个引用,多个对象:

    第8行,引用garen指向新创建的对象(对象1)
    第9行,同一个引用garen指向新创建的对象(对象2)
    这个时候,对象1,就没有任何引用指向了
    换句话说,就没有任何手段控制和访问该对象,那么该对象就变得没有意义。
    二、在LOL中,武器是物品的一种,也是有名称和价格的,所以在设计类的时候,可以让武器继承物品,从而继承名称和价格属性。
    1、物品类Item 有属性 name,price
    public class Item {
        String name;
        int price;
    }

    2、武器类: Weapon不继承Item的写法
    独立设计 name和price属性,同时多了一个属性 damage 攻击力

    public class Weapon{
        String name;
        int price;
        int damage; //攻击力
    }

    3、这一次Weapon继承Item
    虽然Weapon自己没有设计name和price,但是通过继承Item类,也具备了name和price属性

    public class Weapon extends Item{
        int damage; //攻击力
         
        public static void main(String[] args) {
            Weapon infinityEdge = new Weapon();
            infinityEdge.damage = 65; //damage属性在类Weapon中新设计的
             
            infinityEdge.name = "无尽之刃";//name属性,是从Item中继承来的,就不需要重复设计了
            infinityEdge.price = 3600;         
        }    
    }

    package charactor;
     
    public class Hero {
        public String name;
        protected float hp;
     
        public static void main(String[] args) {
               Hero garen =  new Hero();
               garen =  new Hero();
        }
    }
  • 相关阅读:
    003.iSCSI客户端管理
    002.iSCSI服务端配置
    001.iSCSI简介
    004.RAID删除
    003.RAID管理
    002.RAID创建
    001.RAID简介
    001.hadoop及hbase部署
    001.Parted工具使用
    007.LVM查看命令
  • 原文地址:https://www.cnblogs.com/Parker-YuPeng/p/8564474.html
Copyright © 2011-2022 走看看