zoukankan      html  css  js  c++  java
  • java 学习3。类 和 继承

    java 成员变量的初始化顺序是,1.定义时候给的值-》2.构造函数中赋值。   没有看编译后的编码,估计定义类似c++的参数初始化列表,给内存的时候就赋值, 而构造函数中其实是给默认值重新赋值。

    如果定义的时候没有赋值,那么就会给默认值,也就是0,null。等。
    如果是final 变量, 按道理 必须定义的时候给,因为那个时候是第一词赋值,但是由于提供给用户灵活性,导致可以在构造函数赋值,构造函数的时候,当成第一次赋值,但是又造成初始化顺序理解的不统一,其实划不来。
    如果细心点,会发现java 定义时给的值就像是c++的构造函数的参数初始化列表。:MyClass:CMyClass(int x, int y) : y(y), x(x) .


    //学习了类和继承,以及 派生类的构造以及 方法覆盖。

    public
    static void Study_class() { //goods基类是否应该是一个虚类.其实并不是固定的.看场景,如果把goods基类看作现实物品的基类,那么就应该是虚类.因为不存在一个概念的物品. //但如果把goods 看作是某物品的基本信息类,那么可以是普通类.代表一个物品的基础信息. //下面就是作为基类创建. List<goods> mygoods=new ArrayList<goods>(); goods book_cshart=new goods(0, "c#", 3.1f, enum_goods_type.book); goods book_javaGoods=new goods(1, "java", 4.5f, enum_goods_type.book); goods fruit_apple=new goods(3,"apple",1f,enum_goods_type.fruit); goods fruit_banana=new goods(4,"banana",0.9f,enum_goods_type.fruit); mygoods.add(book_cshart); mygoods.add(book_javaGoods); mygoods.add(fruit_apple); mygoods.add(fruit_banana); for(int i=0;i<mygoods.size();i++) { System.out.println("base:"+mygoods.get(i).MyBaseInfo()); System.out.println("special"+mygoods.get(i).MySpecialInfo()); } //派生类创建 book_cshart=new Book(0, "c#2", 3.1f, "linson", new Date()); book_javaGoods=new Book(10, "java2", 4.5f, "linson", new Date()); fruit_apple=new Fruit(3, "apple2", 1f, "red"); fruit_banana=new Fruit(4,"banana2",0.9f,"yellow"); List<goods> mygoods2=new ArrayList<goods>(); mygoods2.add(book_cshart); mygoods2.add(book_javaGoods); mygoods2.add(fruit_apple); mygoods2.add(fruit_banana); for(int i=0;i<mygoods.size();i++) { System.out.println("base:"+mygoods2.get(i).MyBaseInfo()); System.out.println("special"+mygoods2.get(i).MySpecialInfo()); } }

    基类:

    package com.linson;
    
    import java.text.DecimalFormat;
    
    enum enum_goods_type
    {
        book,
        fruit;
    }
    
    
    public class goods 
    {
        public int id;
        public String name;
        public float price;
        public enum_goods_type gtype;
        
        public goods(int _id,String _name,float _price,enum_goods_type _type)
        {
            id=_id;
            name=_name;
            price=_price;
            gtype=_type;
        }
        
        public String MyBaseInfo()
        {
            DecimalFormat dt=new DecimalFormat();
            dt.applyLocalizedPattern("0.00");
            String priceformat=dt.format(price);
            return "ID:"+id+". Name:"+name+". price:"+priceformat+". type:"+gtype.name();
        }
        
        public String MySpecialInfo()
        {
            return "";
        }
    }

    book 

    package com.linson;
    
    import java.util.Date;
    
    public class Book extends goods
    {
        public String writer;
        public Date publicDate;
        
        public Book(int _id,String _name,float _price,String _writer,Date _publicdate)
        {
            super(_id, _name, _price, enum_goods_type.book);
            writer=_writer;
            publicDate=_publicdate;
        }
        
        @Override
        public String MySpecialInfo()
        {
            String retString=MyBaseInfo();
            
            retString=retString+" .Writer:"+writer+".";
            return retString;
        }
    }

    fruit:

    package com.linson;
    
    public class Fruit extends goods
    {
        public String Color;
        
        public Fruit(int _id,String _name,float _price,String _color)
        {
            super(_id, _name, _price,com.linson.enum_goods_type.fruit);
            Color=_color;
        }
        
        @Override
        public String MySpecialInfo()
        {
            String retString=MyBaseInfo();
            
            retString=retString+" .Color:"+Color+".";
            return retString;
        }
    }
  • 相关阅读:
    [置顶] Extjs4 异步刷新书的情况下 保持树的展开状态
    控制系统中常用的名词术语
    开环控制系统与闭环控制系统
    反馈控制
    Tensorflow把label转化成one_hot格式
    Tensorflow——tf.nn.max_pool池化操作
    Tensorflow——tf.nn.conv2d卷积操作
    Tensoflow简单神经网络实现非线性拟合
    Tensorflow 中的 placeholder
    Tensorflow 中的constant、Session、placeholde和 Variable简介
  • 原文地址:https://www.cnblogs.com/lsfv/p/9554017.html
Copyright © 2011-2022 走看看