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;
        }
    }
  • 相关阅读:
    poj 2187 Beauty Contest(旋转卡壳)
    poj 2540 Hotter Colder(极角计算半平面交)
    poj 1279 Art Gallery(利用极角计算半平面交)
    poj 3384 Feng Shui(半平面交的联机算法)
    poj 1151 Atlantis(矩形面积并)
    zoj 1659 Mobile Phone Coverage(矩形面积并)
    uva 10213 How Many Pieces of Land (欧拉公式计算多面体)
    uva 190 Circle Through Three Points(三点求外心)
    zoj 1280 Intersecting Lines(两直线交点)
    poj 1041 John's trip(欧拉回路)
  • 原文地址:https://www.cnblogs.com/lsfv/p/9554017.html
Copyright © 2011-2022 走看看